不锁定表的情况下使用MySQLDump

4

如果你有很多表格,似乎只能进行没有锁定所有表格的MySQLDump,否则会出现错误。

没有锁定所有表格执行MySQLDump的副作用是什么?用这种方式获得的数据库快照是否一致?我还有其他备份MySQL数据库中许多表格的选择吗?


如果您确实需要锁定,是否可以在数据库最不活跃的时间自动执行锁定操作? - Rippo
4个回答

7

如果使用InnoDB引擎,最好的方式是在一个复制从机上运行备份。这样锁定将没有影响。否则,只需使用已提到的--single-transaction标志。


4

您使用哪些存储引擎?

如果您使用的是InnoDB,则可以使用--single-transaction标志运行mysqldump,获取一致的快照而无需锁定表。

如果您使用的是MyISAM,则需要锁定表以获取一致的快照。否则,在mysqldump运行时运行在您的MyISAM表上的任何插入/更新/删除语句可能会或可能不会反映在输出中,这取决于这些语句的时间安排。


2

--single-transaction 标志应该适用于 InnoDB 类型的数据库。


1
对于Innodb,你需要在mysqldump实用程序中提到--single-transaction,以避免锁定并获得一致的快照。
对于MyISAM,您需要锁定表以获取一致的快照,否则在运行转储时将会丢失DML日志记录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接