2013-06-12 41 views
1

我有一個使用innodb引擎的mysql數據庫。當我執行mysqldump時,表被鎖定,寫入失敗。所以我不想將寫入操作發送到執行mysqldump的數據庫。執行mysqldump時MYSQL變量變化

是否有變量,我可以看看,這將表明轉儲正在發生,數據庫被鎖定?

回答

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集羣(順便說一下,我在Percona工作),它應該沒有什麼不同。

唯一可能受PXC影響的是如果您使用wsrep_causal_reads,如果有未提交的寫入集傳入,則會使讀取塊。

如果你喜歡Percona的產品,而你所有的表是InnoDB的,你應該使用Percona XtraBackup,還執行備份,而不鎖定。

+0

謝謝比爾。好吧,我撒了一點。數據庫實際上是一個percona xtradb集羣。該羣集有3個節點。這會繼續嗎? 我已經有了一個腳本來檢查集羣節點的狀態,所以我覺得很容易找到一個指示轉儲正在發生的變量。 –