MySQL Mysqldump 常见问题和处理

1、GTID 特性相关

MySQL 5.6 引入了 GTID 特性,因此随 5.6 版本分发的 mysqldump 工具增加了 –set-gtid-purged 选项。

选项名:set-gtid-purged
默认值:AUTO
可选值:ON,OFF,AUTO
作用:是否输出 SET@@GLOBAL.GTID_PURGED 子句

ON:在 mysqldump 输出中包含 SET@@GLOBAL.GTID_PURGED 语句
OFF:在 mysqldump 输出中不包含 SET@@GLOBAL.GTID_PURGED 语句
AUTO:默认值,对于启用 GTID 实例,会输出 SET@@GLOBAL.GTID_PURGED 语句;对于没有启动或者不支持 GTID 的实例,不输出任何 GTID 相关信息。

因此对于使用 MySQL 5.6 及以上版本带有的 mysqldump 工具进行 MySQL 数据导出时设置该选项为 OFF。

注意:
如果 mysqldump 设置 set-gtid-purged=ON 从 MySQL 5.5 或 5.1 版本导出数据,mysqldump 会提示下面的错误:

Error: Server has GTIDs disabled.

或者

mysqldump: Couldn't execute 'SELECT @@GTID_MODE': Unknown system variable 'GTID_MODE' <1193>

2、避免表级锁等待

mysqldump 默认会启用 lock-tables 选项,对于要导出的表加级锁,阻止表上的 DML 操作。

MySQL 默认支持的 InnoDB 引擎支持事务,建议使用 single-transaction 选项进行导出,而不要设置 lock-all-tables 或 lock-tables 选项。

(1)、lock-all-tables
默认值:FALSE
可选值:FALSE,TRUE
作用:在数据导出期间放置 global read lock ,所有库下的所有表在导出期间为只读。自动关闭 lock-tables 和 single-transaction 选项。

(2)、lock-tables
默认值:TRUE
可选值:FALSE,TRUE
作用:导出期间在导出表上放置表级锁。默认开启,通过制定 –skip-lock-tables 选项来关闭。

(3)、single-transaction
默认值:FALSE
可选值:FALSE,TRUE
作用:导出操作被放置在一个事务中执行。自动关闭 lock-tables 选项。


你可能感兴趣的:(数据库)