2

我有一个InnoDBMySQL 数据库。当我导出SQL转储时,锁定是如何发生的?导出期间整个数据库是否锁定?还是只是桌子?还是只是个别行?出口究竟是如何运作的InnoDB

4

1 回答 1

0

您可以控制锁定的内容。

为了安全起见,您可以像这样锁定所有表:

mysqldump --lock-all-tables

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

或者,如果您确定不会更改表:

mysqldump --single-transaction

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

于 2012-04-09T04:24:00.043 回答