我有一个InnoDB
MySQL 数据库。当我导出SQL
转储时,锁定是如何发生的?导出期间整个数据库是否锁定?还是只是桌子?还是只是个别行?出口究竟是如何运作的InnoDB
?
问问题
684 次
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 回答