首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.6 Slave 警告:relay log info 不一致的解決方案

     編輯:MySQL 綜合教學

錯誤現象

[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_info
  • relay-log.info → 寫入表 mysql.slave_relay_log_info

預設仍寫入檔案(FILE 模式),且未開啟 relay_log_recovery,故觸發警告。

解決方法:啟用 TABLE 模式與自動恢復

修改配置檔(永久生效)

[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;

關鍵表結構說明

slave_master_info(對應 master.info)

記錄 Master 連線資訊、目前讀取的 Binlog 檔案/位置、SSL 參數、心跳間隔、UUID 等。

slave_relay_log_info(對應 relay-log.info)

記錄目前 Relay Log 檔案/位置、對應 Master Binlog 位置、SQL 延遲秒數。

參數詳細說明

參數預設值建議值說明
master_info_repositoryFILETABLE將 master 資訊寫入系統表,支援事務提交
relay_log_info_repositoryFILETABLE將 relay log 位置寫入系統表,支援事務提交
relay_log_recovery01啟動時忽略未執行的 relay log,重新從 Master 拉取,避免殘損 relay log 導致不一致

注意事項

  • 兩個 repository 皆設為 TABLE 時,slave_master_info、slave_relay_log_info 必須使用 InnoDB 引擎(預設即是)。
  • 啟用 relay_log_recovery=1 後,Slave 重啟會自動修復 relay log,適合生產環境。
  • 若需即時監控同步狀態,請查系統表或 SHOW SLAVE STATUS,檔案內容有延遲。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved