导出时MySQL InnoDB表锁定

导出时MySQL InnoDB表锁定,mysql,innodb,Mysql,Innodb,我有一个InnoDBMySQL数据库。当我导出SQLdump时,锁定是如何发生的?整个数据库是否在导出期间锁定?还是只是桌子?还是仅仅是一行?导出如何与InnoDB一起工作?您可以控制锁定的内容 为了安全起见,您可以像这样锁定所有表: mysqldump --lock-all-tables 文档:锁定所有数据库中的所有表。这是通过在整个转储期间获取全局读取锁来实现的。此选项自动关闭--single transaction和--lock表 或者,如果您确定不打算更改表: mysqldump --

我有一个
InnoDB
MySQL数据库。当我导出
SQL
dump时,锁定是如何发生的?整个数据库是否在导出期间锁定?还是只是桌子?还是仅仅是一行?导出如何与InnoDB一起工作?

您可以控制锁定的内容

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

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

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

mysqldump --single-transaction

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

您可以控制锁定的内容

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

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

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

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