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。
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 在從庫執行。