我有一个InnoDB
MySQL数据库。当我导出SQL
转储时,锁定是如何发生的?导出期间整个数据库是否锁定?还是只是桌子?或者只是个别行?导出如何与InnoDB
一起使用?
答案 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检索表内容以获取不正确的内容或失败。