我有一個使用innodb引擎的mysql數據庫。當我執行mysqldump時,表被鎖定,寫入失敗。所以我不想將寫入操作發送到執行mysqldump的數據庫。執行mysqldump時MYSQL變量變化
是否有變量,我可以看看,這將表明轉儲正在發生,數據庫被鎖定?
我有一個使用innodb引擎的mysql數據庫。當我執行mysqldump時,表被鎖定,寫入失敗。所以我不想將寫入操作發送到執行mysqldump的數據庫。執行mysqldump時MYSQL變量變化
是否有變量,我可以看看,這將表明轉儲正在發生,數據庫被鎖定?
沒有指示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,還執行備份,而不鎖定。
謝謝比爾。好吧,我撒了一點。數據庫實際上是一個percona xtradb集羣。該羣集有3個節點。這會繼續嗎? 我已經有了一個腳本來檢查集羣節點的狀態,所以我覺得很容易找到一個指示轉儲正在發生的變量。 –