2
我有一个InnoDB
MySQL数据库。当我输出SQL
转储时,锁定是如何发生的?整个数据库在导出过程中是否锁定?或者只是桌子?或者只是个别的行?导出如何与InnoDB
一起工作?MySQL InnoDB表导出锁定
我有一个InnoDB
MySQL数据库。当我输出SQL
转储时,锁定是如何发生的?整个数据库在导出过程中是否锁定?或者只是桌子?或者只是个别的行?导出如何与InnoDB
一起工作?MySQL InnoDB表导出锁定
您可以控制什么是锁定的。
要成为最安全的,可以锁定所有类似的表:
mysqldump --lock-all-tables
文档:在所有数据库锁定所有表。这是通过获取整个转储期间的全局读锁来实现的。此选项会自动关闭 - 单事务和 - 锁表。
或者,如果你确定你不会改变表:
mysqldump --single-transaction
文档:虽然--single事务转储过程,以确保有效的转储文件(正确的表的内容和二进制日志坐标),没有其他连接应该使用以下语句:ALTER TABLE,CREATE TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE。一致的读取与这些语句不是隔离的,因此在转储的表上使用它们会导致由mysqldump执行的SELECT检索表内容以获取不正确的内容或失败。