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 TABLE
或 DROP TABLE
,以及对同一 table.
的其他操作
--lock-tables
对 MyISAM tables 很有用。
通常建议使用 --opt
。我认为它独立于上述选项。
有人可以解释一下 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 TABLE
或 DROP TABLE
,以及对同一 table.
--lock-tables
对 MyISAM tables 很有用。
--opt
。我认为它独立于上述选项。