mysqldump东西很多方面相似相反效果的东西mysqlimport。它们有一些同样的选项。但mysqldump能够做更多的事情。它能够把整个数据库装载到一个独自的文本文件中。这个文件包括有一切重建您的数据库所需求的SQL指令。这个指令获得一切的形式(Schema,后面有解说)而且将其转换成DDL语法(CREATE句子,即数据库界说句子),获得一切的数据,而且从这些数据中创立INSERT句子。这个东西将您的数据库中一切的规划倒转。因为一切的东西都被包括到了一个文本文件中。这个文本文件能够用一个简略的批处理和一个合适SQL句子导回到MySQL中。这个东西令人难以置信地简略而快速。决不会有半点让人头疼地地方。
因此,假如您想装载整个数据库Meet_A_Geek的内容到一个文件中,能够运用下面的指令:
bin/mysqldump–pMeet_A_Geek>MeetAGeek_Dump_File.txt
这个句子也答应您指定一个表进行dump(备份/导出/装载?)。假如您只是希望把数据库Meet_A_Geek中的表Orders中的整个内容导出到一个文件,能够运用下面的指令:
bin/mysqldump–pMeet_A_GeekOrders>MeetAGeek_Orders.txt
这个十分的灵敏,您乃至能够运用WHERE从句来选择您需求的记载导出到文件中。要到达这样的目的,能够运用相似于下面的指令:
bin/mysqldump–p–where=”Order_ID>2000″Meet_A_GeekOrders>Special_Dump.txt
mysqldump东西有很多的选项,部分选项如下表:
选项/Option效果/ActionPerformed
–add-drop-table
这个选项将会在每一个表的前面加上DROPTABLEIFEXISTS句子,这样能够保证导回MySQL数据库的时分不会犯错,因为每次导回的时分,都会首要检查表是否存在,存在就删去
–add-locks
这个选项会在INSERT句子中捆上一个LOCKTABLE和UNLOCKTABLE句子。这就防止在这些记载被再次导入数据库时其他用户对表进行的操作
-cor-complete_insert
这个选项使得mysqldump指令给每一个产生INSERT句子加上列(field)的姓名。当把数据导出导另外一个数据库时这个选项很有用。
–delayed-insert在INSERT指令中参加DELAY选项
-For-flush-logs运用这个选项,在执行导出之前将会刷新MySQL服务器的log.
-for-force运用这个选项,即便有过错产生,仍然持续导出
–full这个选项把附加信息也加到CREATETABLE的句子中
-lor-lock-tables运用这个选项,导出表的时分服务器将会给表加锁。
-tor-no-create-info
这个选项使的mysqldump指令不创立CREATETABLE句子,这个选项在您只需求数据而不需求DDL(数据库界说句子)时很便利。
-dor-no-data这个选项使的mysqldump指令不创立INSERT句子。
在您只需求DDL句子时,能够运用这个选项。
–opt此选项将打开一切会提高文件导出速度和发明一个能够更快导入的文件的选项。
-qor-quick这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时分就写入导文件中。
-Tpathor-tab=path这个选项将会创立两个文件,一个文件包括DDL句子或许表创立句子,另一个文件包括数据。DDL文件被命名为table_name.sql,数据文件被命名为table_name.txt.路径名是存放这两个文件的目录。目录有必要现已存在,而且指令的运用者有对文件的特权。
-w”WHEREClause”or-where=”Whereclause”
如前面所讲的,您能够运用这一选项来过筛选将要放到导出文件的数据。
假定您需求为一个表单中要用到的帐号树立一个文件,司理要看本年(2004年)一切的订单(Orders),它们并不对DDL感兴趣,而且需求文件有逗号分隔,因为这样就很简单导入到Excel中。为了完成这个使命,您能够运用下面的句子:
bin/mysqldump–p–where”Order_Date>=’2000-01-01′”
–tab=/home/mark–no-create-info–fields-terminated-by=,Meet_A_GeekOrders
这将会得到您想要的结果。
schema:形式
Thesetofstatements,expressedindatadefinitionlanguage,thatcompletelydescribethestructureofadatabase.
一组以数据界说语言来表达的句子集,该句子集完整地描述了数据库的结构。
mysqldump备份数据库命令
1、用法
mysqldump-uroot-p–databasestest>/home/test.sql
mysqldump-uroot-h127.0.0.1-p–databasestest–single-transaction–set-gtid-purged=off–max_allowed_packet=512M>/home/test.sql
2、参数阐明
-uroot:数据库用户名为root
-h172.16.43.131:指定mysql数据库IP地址
-p:密码
–databasestest:设置导出的数据库为test,能够同时导出多个库,库名用空格隔开,如–databasestest1test2,也能够导出所有库,运用–all-databases参数
–single-transaction:设置业务阻隔级别为可重复读,确保dump期间,其他线程对提交的数据不会影响本次数据,改期间也不会锁表
–lock-all-tables:锁所有表,相对–single-transaction,dump期间,其他线程都不能提交数据(默许战略)
–no-data:不备份数据,只备份数据库结构
–set-gtid-purged=off:封闭全局业务ID(GTID)
–max_allowed_packet=512M:设置max_allowed_packet巨细,值最好等于my.conf配置的巨细,不然会出现Gotpacketbiggerthan’max_allowed_packet’byteswhendumpingtable`xxx`atrow:3540过错
更多参数阐明可查看官网:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html,或许运用指令mysqldump–help
3、压缩备份
mysqldump-uroot-p–databasestest|gzip>/home/test.sql.zip
留意:导出的备份文件中已/*!最初,以*/;结尾的句子不是注释信息,mysql进行了扩展,该部分的句子是能够被履行的。
4、复原数据库
mysql-uroot-p//登陆数据库
source/home/test.sql;//履行数据库脚本
小技巧:运用上面的方法复原库时库名和原始库名是一样,如想换一个姓名,必须修正备份文件中的库名,如下图中的test
但备份文件很大时,咱们很难找到一个编辑器打开这个文件并进行修正,此时咱们能够用到linux体系的sed指令,将字符进行替换
sed-i’1,/DROPTABLE/s/`test`/`test_db`/g’test.sql
出现的过错:
1、mysqldump:Error3024:Queryexecutionwasinterrupted,maximumstatementexecutiontimeexceededwhendumpingtable`base_uploadfileblob`atrow:5549
max_execution_time设置过小。默许为0,表明不约束时间,可修正/etc/my.conf文件进行配置,单位为毫秒,如:max_execution_time=100000