MySQL InnoDB表在导出时锁定

时间:2012-04-09 03:19:00

标签: mysql innodb

我有一个InnoDB MySQL数据库。当我导出SQL转储时,锁定是如何发生的?导出期间整个数据库是否锁定?还是只是桌子?或者只是个别行?导出如何与InnoDB一起使用?

1 个答案:

答案 0 :(得分:0)

您可以控制锁定的内容。

为了最安全,您可以锁定所有表格:

mysqldump --lock-all-tables

文档:锁定所有数据库中的所有表。这是通过在整个转储期间获取全局读锁来实现的。此选项自动关闭--single-transaction和--lock-tables。

或者如果您确定不打算改变表格:

mysqldump --single-transaction

Docs:当--single-transaction转储正在进行时,为了确保有效的转储文件(正确的表内容和二进制日志坐标),其他任何连接都不应使用以下语句:ALTER TABLE,CREATE TABLE,DROP TABLE ,RENAME TABLE,TRUNCATE TABLE。一致读取不会与这些语句隔离,因此在要转储的表上使用它们会导致mysqldump执行的SELECT检索表内容以获取不正确的内容或失败。