我一定是漏掉了什么。为了保持一致的备份,我经常看到的是:
mysqldump --single-transaction --all-databases > alldbs.sql
然而,MySQL文档表明默认情况下--opt是开着的。这就是--lock-tables。
在MySQL文档中,在--single-transaction下,--single-transaction和--lock-tables的使用是相互排斥的。
在我看来,命令行应该是:
mysqldump --skip-opt (add in all the ones it uses except --lock-tables)
--single-transaction --all-databases > ....我们有无法锁定很长时间的生产服务器,最好不到一分钟。有什么建议吗?你能告诉我我在这里可能缺少了什么吗?
发布于 2014-03-05 01:13:28
手册指出:
--single-transaction选项和--lock-tables选项是相互排斥的,因为LOCK TABLES会导致隐式提交任何挂起的事务。
mysqldump.c的代码在第963行附近有以下代码(MySQL 5.5.33源代码):
if (opt_single_transaction || opt_lock_all_tables)
lock_tables= 0;在加载了所有默认值并分析了命令行选项后,将对此进行评估。
因此,即使在默认情况下启用了--opt,因此它启用了--lock-tables,但如果使用--single-transaction,则会更改这一点。
https://dba.stackexchange.com/questions/60144
复制相似问题