Mysqldump --single-transaction 选项

Mysqldump --single-transaction option

有人可以解释一下 mysqldump --single-transaction 如何真正用于事务 tables,比如 InnoDB?我已经阅读了官方 documentation 但仍然没有胶水。它是否像 --lock-tables 那样执行每个 table 锁而不是全局锁?此外,mysqldump 将 --opt 作为默认选项运行,其中包括 --lock-tables,但它们与 --single-transaction 互斥,如上文 link 中所述。在单个 mysqldump 命令中使用 --single-transaction 时,我应该使用 --skip-opt 吗?

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

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

提前致谢。

--single-transaction 表示 "no changes that occur to InnoDB tables during the dump will be included in the dump"。因此,实际上,转储是数据库在转储 开始 瞬间的快照,无论转储需要多长时间。

由于锁交互的方式,这将减慢 tables,甚至可能停止写入。例如,考虑转储期间的 运行 ALTER TABLEDROP TABLE,以及对同一 table.

的其他操作

--lock-tables 对 MyISAM tables 很有用。

通常建议使用

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