有人可以解释mysqldump 如何--single-transaction
实际用于事务表,如InnoDB?我已经阅读了官方文档,但仍然没有胶水.它是按照表锁而不是全局锁--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
提前致谢.
--single-transaction
说"在转储过程中InnoDB表没有发生的变化将包含在转储中".因此,有效地,转储是转储启动瞬间数据库的快照,无论转储需要多长时间.
由于锁的交互方式,这会降低表的速度,甚至可能会停止写入.例如,考虑运行ALTER TABLE
或DROP TABLE
转储期间,以及同一个表上的其他操作.
--lock-tables
对MyISAM表很有用.
--opt
通常建议.我认为它独立于上述选项.