2017-04-13 83 views
0

我們有生產mysql數據庫約35G(innoDB),我們注意到當mysqldump啓動應用程序變得不穩定。我們用下面的命令來運行dumpmysqldump測試鎖定表

mysqldump --password=XXXX --add-drop-table foo | gzip -c > foo.dmp.gz

後,谷歌搜索的人說轉儲數據之前mysqldump鎖表,以便人們使用--single-transaction標誌innoDB

提出這樣的實驗我的mysqldump手動啓動和運行一些查詢表讀/寫,它允許我在mysqldump運行時執行所有操作,所以如何重現mysqldump真正鎖定導致應用程序可訪問性的表的行爲?

  • 是否mysqldump鎖讀取操作或只寫在表上?
  • 我們有幾個dB在這種情況下,我們應該做些什麼,以避免鎖
+0

有什麼建議嗎? – Satish

回答

1

使用--single-transaction,以避免對InnoDB表的表鎖使用MyISAM

雖然你真的不應該使用MyISAM,但你真的可以對MyISAM做任何事情。最好的解決方法是創建只讀副本並從副本進行備份,以便鎖不會影響應用程序。

您應該發現,當備份運行時,READ LOCAL鎖將保留在當前正在備份的單個數據庫的表中,這意味着您可以從表中讀取數據,但可以寫入(插入/更新/刪除)會阻止,除了 MyISAM上的某些插入操作可以在不影響鎖定的情況下實現。那些可能被允許。查看這種情況的最簡單方法是反覆查詢SHOW FULL PROCESSLIST;以查找阻塞的線程。

+0

你是對的,我測試過,它阻止了我的寫操作,建議將'MyISAM'轉換爲'InnoDB'?我應該小心轉換表格 – Satish