MySQLDump没有锁定表

时间:2010-05-03 10:13:08

标签: mysql mysqldump

似乎如果你有很多表,你只能执行一个MySQLDump而不会全部锁定它们,否则你可能会出错。

在不锁定所有表的情况下执行MySQLDump有什么副作用;数据库快照我是这样得到的,一致吗?我是否还有其他方法可以备份包含许多表的MySQL数据库?

4 个答案:

答案 0 :(得分:6)

最好的方法(如果使用InnoDB)实际上是在复制的从属服务器上运行备份。这样锁定将无关紧要。 否则只需使用--single-transaction标志。

答案 1 :(得分:3)

您使用什么存储引擎?

如果您正在使用InnoDB,那么您可以使用--single-transaction标志运行mysqldump并获得一致的快照而不锁定表。

如果您使用的是MyISAM,则需要锁定表格以获得一致的快照。否则,mysqldump运行时在MyISAM表上运行的任何insert / update / delete语句可能会也可能不会反映在输出中,具体取决于这些语句的时间。

答案 2 :(得分:2)

如果您的数据库类型为InnoDB,则--single-transaction标志应该有效。

答案 3 :(得分:0)

对于Innodb,您需要在mysqldump实用程序中提及--single-transaction以避免锁定并获得一致的快照。

对于MyISAM,您需要锁定表以获得一致的快照,否则您将错过在运行转储时记录的DML