【发布时间】:2017-01-16 18:49:59
【问题描述】:
有人能解释一下 mysqldump --single-transaction 是如何真正适用于事务表的,比如 InnoDB 吗?我已经阅读了官方documentation,但仍然没有胶水。它是否像--lock-tables 那样执行每个表锁而不是全局锁?此外,mysqldump 将--opt 作为默认选项运行,其中包括--lock-tables,但它们与--single-transaction 互斥,如上面的文档链接中所述。在单个 mysqldump 命令中使用--single-transaction 时,我应该使用--skip-opt 吗?
我需要转储大小约为 700 Gb 的 InnoDB 表,我正在寻找正确的命令来实现这一点。目前我使用以下一种:
mysqldump -B my_db --quick --single-transaction --max_allowed_packet=512M --compress --order-by-primary
提前致谢。
【问题讨论】:
-
为什么不直接查看输出文件看看它做了什么?
-
您会在转储期间访问表吗?写吗?
-
相反,请参阅 Percona 的 Xtradbdump。
-
@RickJames 我在 AWS RDS 上运行了 mysql。由于 RDS 不提供对数据库文件的直接访问,因此无法使用 Percona 的 Xtradbdump。我从 RDS 只读副本创建转储,因此在此过程中复制仍然有效。
-
来自this AWS RDS 指南,他们还建议使用
--single-transaction选项。我只是想详细了解它是如何工作的。
标签: mysql database transactions innodb