MySQL Backup mysqldump 常用选项与主要用法 (6)

--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_SCHEMAperformance_schemasys的,如果需要导出,则在命令行中显示指定选项 --databases, -B

mysqldump不会导出InnoDB创建表空间CREATE TABLESPACE语句;

不建议使用当前版本的mysqldump导出文件导入MySQL5.6.9(或更早)开启GTID的版本;

如果general_logslow_query_log都是指定存存储在表中,mysqldump导出文件包含general_logslow_query_log表的创建语句,但并不包含表数据。

参考

https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

https://www.xp8.net/data/788.html

?p=3867

☆〖本人水平有限,文中如有错误还请留言批评指正!〗☆

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzxzx.html