Mysqldump - 单个事务选项

时间:2017-01-16 18:50:00

标签: mysql database transactions innodb

有人可以解释 mysqldump --single-transaction如何实际用于事务表,比如InnoDB吗?我已经阅读了官方documentation,但仍然没有胶水。是--lock-tables执行每个表锁而不是全局锁吗?此外,mysqldump作为默认选项运行--opt,其中包含--lock-tables,但它们与--single-transaction互斥,如上面的文档链接中所述。在单个 mysqldump 命令中使用--skip-opt时,我应该使用--single-transaction吗?

我需要转储大小为~700 Gb的InnoDB表,我正在寻找正确的命令来实现这个目标。目前我使用以下一个:

 mysqldump -B my_db --quick --single-transaction --max_allowed_packet=512M --compress --order-by-primary

提前致谢。

1 个答案:

答案 0 :(得分:7)

--single-transaction说“在转储期间InnoDB表中没有发生的任何更改都将包含在转储中”。因此,无论转储采用多长时间,转储都是转储启动时的数据库的快照。

由于锁的交互方式,这会降低表的速度,甚至可能会停止写入。例如,考虑在转储期间运行ALTER TABLEDROP TABLE,以及在同一个表上运行其他操作。

--lock-tables对MyISAM表非常有用。

通常建议

--opt。我认为它独立于上述选项。