[Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
此警告不影響複製功能,但表示 Slave 發生崩潰時,relay log 位置資訊可能不一致,導致復原困難。
MySQL 5.6 引入 Crash-Safe Replication:
master.info → 寫入表 mysql.slave_master_inforelay-log.info → 寫入表 mysql.slave_relay_log_info預設仍寫入檔案(FILE 模式),且未開啟 relay_log_recovery,故觸發警告。
[mysqld]
master_info_repository = TABLE
relay_log_info_repository = TABLE
relay_log_recovery = 1
重啟 MySQL 服務生效。
STOP SLAVE;
SET GLOBAL master_info_repository = 'TABLE';
SET GLOBAL relay_log_info_repository = 'TABLE';
START SLAVE;
relay_log_recovery 為唯讀參數,必須改配置檔重啟。
SHOW VARIABLES LIKE '%repository';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| master_info_repository | TABLE |
| relay_log_info_repository | TABLE |
+--------------------------------------+-------+
-- 查看同步狀態
SELECT * FROM mysql.slave_master_info;
SELECT * FROM mysql.slave_relay_log_info;
記錄 Master 連線資訊、目前讀取的 Binlog 檔案/位置、SSL 參數、心跳間隔、UUID 等。
記錄目前 Relay Log 檔案/位置、對應 Master Binlog 位置、SQL 延遲秒數。
| 參數 | 預設值 | 建議值 | 說明 |
|---|---|---|---|
| master_info_repository | FILE | TABLE | 將 master 資訊寫入系統表,支援事務提交 |
| relay_log_info_repository | FILE | TABLE | 將 relay log 位置寫入系統表,支援事務提交 |
| relay_log_recovery | 0 | 1 | 啟動時忽略未執行的 relay log,重新從 Master 拉取,避免殘損 relay log 導致不一致 |
slave_master_info、slave_relay_log_info 必須使用 InnoDB 引擎(預設即是)。relay_log_recovery=1 後,Slave 重啟會自動修復 relay log,適合生產環境。SHOW SLAVE STATUS,檔案內容有延遲。