Mysqldump 在備庫進行備份時會阻塞備庫的sql_thread
情況描述:
-
讀寫分離環境,Mysql 主庫正常。
-
備庫存在大查詢持續了7個小時之久。
-
夜間10點備份啟動出現waiting for table flush 等待事件。
-
備份後面進來的會話出現積壓且前臺應用被阻塞。
處理過程:
-
收到報警後檢查主從延遲情況,show slave status\G;
有延遲。
-
select * from information_schema.processlist order by time desc; 檢查當前session 的執行情況。
看到有4個session 執行了28000s 未執行完成, 有會話處於waiting for table flush 狀態。此4個會話從堡壘機終端過來確定不是應用中的session。
-
將此4個session kill 掉, show processlist 檢視會話狀態, 恢復正常, 主從延遲追平。
故障處理過後回想什麼原因導致會話積壓,前臺應用被阻塞。
-
大查詢未結束。
-
mysqldump 在備份時會進行flush table 操作出現等待。
-
flush table 操作無法完成後面的session 被阻塞。
測試環境復現場景中發現的現象:
1. 使用mysqldump 在備庫進行備份,備份sql中不加--single-transaction 時,主庫中對錶進行update 操作從庫的sql_thread 執行緒會被mdl 鎖阻塞,出現主從延遲。
需要掌握的知識點:
mysqldump 備份的整個過程:
https://www.cnblogs.com/digdeep/p/12455757.html
MDL 鎖:
https://www.cnblogs.com/zengkefu/p/5690385.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2853824/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysqldump 資料庫備份程式MySql資料庫
- mysqldump備份單庫、部分庫、全庫、及排除部分庫MySql
- Linux基礎命令---mysqldump資料庫備份LinuxMySql資料庫
- Mysql備份和還原資料庫-mysqldumpMySql資料庫
- Mysqldump的備份流程MySql
- MySQLDump的備份方法MySql
- BMMySQL定時備份資料庫(全庫備份)的實現meuMySql資料庫
- Mysqldump備份說明及資料庫備份指令碼分享-運維筆記MySql資料庫指令碼運維筆記
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- 【RMAN】在備庫執行rman備份時報錯RMAN-06820 ORA-17629
- mysqldump全量備份+mysqlbinlog二進位制日誌增量備份MySql
- mysqldump備份技巧分享MySql
- 使用MySQL Workbench進行資料庫備份MySql資料庫
- 【mysqldump】mysqldump及備份恢復示例MySql
- 簡單的mysqldump備份(windows)MySqlWindows
- windows mysqldump備份指令碼WindowsMySql指令碼
- mysqldump使用方法(MySQL資料庫的備份與恢復)MySql資料庫
- 定時備份MySQL資料庫MySql資料庫
- oracle資料庫備份之exp增量備份Oracle資料庫
- 資料庫備份資料庫
- 使用離線工具dmbackup進行資料庫備份資料庫
- linux實現mysql資料庫每天自動備份定時備份LinuxMySql資料庫
- mysqldump+mysqlbinlog執行備份與還原MySql
- 資料庫定時備份linux篇資料庫Linux
- rman如何在備庫執行一致性備份
- Oracle ADG 備庫新增備庫Oracle
- mssql資料庫異地進行異地備份的方法SQL資料庫
- 資料庫備份策略資料庫
- MongoDB資料庫備份MongoDB資料庫
- mysql 資料庫 備份MySql資料庫
- 實現MySQL資料庫的實時備份MySql資料庫
- 康孚備份資料庫時報錯資料庫
- MySQL主從配置及mysqldump備份MySql
- mysql5.6 mysqldump備份報錯MySql
- MySQL資料庫的基本備份MySql資料庫
- DM聯機執行SQL語句進行資料庫備份SQL資料庫
- 備份與恢復:polardb資料庫備份與恢復資料庫
- mysqldump壓縮備份匯出匯入(含定期備份shell指令碼)MySql指令碼