2

我有一个使用 innodb 引擎的 mysql 数据库。当我执行 mysqldump 时,表被锁定并且写入将失败。所以我不想将写入发送到正在执行 mysqldump 的数据库。

是否有我可以查看的变量表明正在发生转储并且数据库已锁定?

4

1 回答 1

0

没有特定变量表明 mysqldump 正在进行中。到底什么是 mysqldump?这只是一个SHOW CREATE TABLE <Table>SELECT * FROM <Table>每张桌子。您可以在 SHOW PROCESSLIST 中看到这些。

对于它的价值,只要您只备份 InnoDB 表,您就不必锁定任何东西。使用mysqldump --single-transaction它将使用事务来确保备份过程的一致读取,而不是锁定。

另见http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_single-transaction

但要更直接地回答您的问题,您可以查询几个地方来发现当前的锁:


回复您的评论:

使用 Percona XtraDB Cluster 时从数据库读取仍然只是本地读取。使用应该没问题mysqldump --single-transaction。如果您使用的是 Percona XtraDB Cluster(顺便说一句,我在 Percona 工作),那应该没有什么不同。

唯一可能受 PXC 影响的是,如果您使用wsrep_causal_reads,如果有未提交的写入集传入,这会使读取阻塞。

如果你喜欢 Percona 产品,并且你所有的表都是 InnoDB,你应该使用Percona XtraBackup,它也可以在没有锁定的情况下执行备份。

于 2013-06-12T20:31:12.667 回答