--lock-all-tables, -x
在dump过程中锁住所有数据库中所有表。该选项会自动关闭 --single-transaction和 --lock-tables选项。
--lock-tables, -l
在dump每个库时锁定库中的表。这个选项只能保证库中表的状态一致,因为针对每个库进行加锁,所以无法保证所有库都是一致状态。
--no-autocommit
指定dump文件中每条INSERT语句包含在SET autocommit = 0和COMMIT语句之间。
--order-by-primary
在dump每张表的时候以表的主键或第一个唯一索引为序。对于导出是MyISAM表而导入是InnoDB表很有用。
--single-transaction
在dump开始之前将会话事务隔离级别设置成REPEATABLE READ并执行语句START TRANSACTION,只适用于事务引擎的表如InnoDB。当指定该选项进行dump的过程中,应该避免其它会话连接执行如下语句:ALTER TABLE,CREATE TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE,因为一致性读并不能隔离以上语句,所以当mysqldump执行SELECT语句进行dump表数据时,其它会话执行以上语句容易产生数据不一致或者报错。
该选项与 --lock-tables是互斥的,因为LOCK TABLES语句会导致在执行的事务隐式提交。
备份所有库
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 -A > test_all.sql备份一个或多个库
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 -B test1 test2 > test1_test2.sql备份一张表或多张表
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 t1 > test1_t1.sql 或 # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 --tables t1 > test1_t1.sql # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 t1 t2 > test1_t1_t2.sql 或 # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 --tables t1 t2 > test1_t1_t2.sql备份库结构(同时会包含表结构)
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 --no-data -B test1 test2 > test1_test2.sql只备份表结构
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 --no-data test1 --tables t1 t2 > test1_t1_t2.sql只备份表数据(不包含建表语句)
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 --no-create-info test1 --tables t1 t2 > test1_t1_t2.sql忽略一张或多张表备份
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 --ignore-table=test1.t1 --ignore-table=test1.t2 > test1_ig_t1_t2.sql输出文件通过管道传到gzip命令进行压缩
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 -A | gzip > test_all.sql.gz指定where条件备份表数据
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 --tables t1 --where='c1>1000000' > test1_t1_w.sql不包含建表语句
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 --no-create-info test1 --tables t1 --where='c1>1000000' > test1_t1_w.sql 注意事项默认情况下,mysqldump是不会导出INFORMATION_SCHEMA、performance_schema和sys的,如果需要导出,则在命令行中显示指定选项 --databases, -B;
mysqldump不会导出InnoDB创建表空间CREATE TABLESPACE语句;
不建议使用当前版本的mysqldump导出文件导入MySQL5.6.9(或更早)开启GTID的版本;
如果general_log和slow_query_log都是指定存存储在表中,mysqldump导出文件包含general_log和slow_query_log表的创建语句,但并不包含表数据。
参考https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
https://www.xp8.net/data/788.html
?p=3867
☆〖本人水平有限,文中如有错误还请留言批评指正!〗☆