首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

XtraBackup 備份超時經典錯誤排查與規避方案

     編輯:MySQL 資料庫相關知識

錯誤現象

innobackupex: Error: Connection to MySQL child process (pid=20080) timedout.
(Time limit of 900 seconds exceeded.) while waiting for reply to MySQL request:
'FLUSH TABLES WITH READ LOCK;'

根因分析

InnoDB 文件拷貝完成後,innobackupex 需執行 FLUSH TABLES WITH READ LOCK (FTWRL) 獲取全局讀鎖,以一致性拷貝 .frm、MyISAM 等非事務文件。若此期間持續有 DML 操作,鎖無法獲取,超過默認 900 秒超時則報錯。

解決方案

方案一:增加超時時間(治標)

修改 innobackupex 腳本中 $MySQL_response_timeout 參數(預設 900),如改為 3600。

方案二:跳過非 InnoDB 鎖表(推薦)

innobackupex --no-lock --slave-info --safe-slave-backup ...
  • --no-lock:拷貝 .frm/MyISAM 時不加 FTWRL,前提是備份窗口無 DDL、MyISAM DML。
  • --safe-slave-backup:在從庫備份時自動 STOP SLAVE SQL_THREAD,Relay Log 不再應用,位點固定,避免備份期間數據變更。需確保 Slave_open_temp_tables=0 才停止 SQL 線程,防臨時表導致不一致。
  • --slave-info:輸出 xtrabackup_slave_info 文件,記錄主庫 Binlog 位點,便於搭建新從庫。

注意事項

  • 若備份用於搭建主從,--no-lock 會導致無 binlog_info/slave_info,需配合 --safe-slave-backup 在從庫執行。
  • 業務端協調低峰窗口執行備份,或使用延遲從庫專職備份,零影響生產。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved