pt
默认开启,包含了一系列选项的集合,主要有 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset,如果要禁用,可以使用选项 --skip-opt。
--quick, -q
对于大表的dump很有帮助。默认开启。该选项使mysqldump
直接从表中获取数据输出而不经过MySQL的缓存。
事务选项(Transactional Options)
--add-locks
指定dump文件中每张表INSERT语句之前添加LOCK TABLES
语句,INSERT语句之后添加UNLOCK TABLES
语句。这样可以提高导入效率。
--flush-logs, -F
在dump开始之前切换日志。该选项需要RELOAD
权限。如果与选项 --all-databases联合使用的话会导致每dump一个库之前都要进行日志切换。如果有使用选项 --lock-all-tables、--master-data或者 --single-transaction,则在dump过程当中只进行一次日志切换。如果希望dump与日志的切换同时发生,则使用 --flush-logs与选项 --lock-all-tables、--master-data或者 --single-transaction一同使用。
--flush-privileges
在dump完mysql数据库之后添加FLUSH PRIVILEGES
语句。
--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
# mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 -A | gzip > test_all.sql.gz
# 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 --trigger