似乎如果你有很多表,你只能执行一个MySQLDump而不会全部锁定它们,否则你可能会出错。
在不锁定所有表的情况下执行MySQLDump有什么副作用;数据库快照我是这样得到的,一致吗?我是否还有其他方法可以备份包含许多表的MySQL数据库?
答案 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