萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 5.5 主從復制報錯 "Could not initialize master info structure" 根因與解決:relaylog 目錄權限與 master.info 殘留

環境背景

  • OS:Linux 2.6.18 (CentOS 5.x 時代)
  • MySQL:5.5.27-log
  • 架構:雙主復制 + 掛載 Slave(讀寫分離)

故障現象

執行 CHANGE MASTER TO ... 後報錯:

ERROR 29 (HY000): File '/data/mysqldata/relaylog/mysql-relay-bin.index' not found (Errcode: 13)
# 後續錯誤日誌:
Error (Code 1201): Could not initialize master info structure

根因分析

  1. relaylog 目錄權限缺失:手動建立 /data/mysqldata/relaylog 但未 chown mysql:mysql,MySQL 無寫入權限(Errcode 13 = Permission denied)
  2. 首次失敗殘留空 master.info:首次失敗後,datadir 下生成 0 位元組的 master.info,後續嘗試因檔案存在但內容無效而報「無法初始化主資訊結構」

解決步驟

  1. 修正 relaylog 目錄權限
    chown -R mysql:mysql /data/mysqldata/relaylog
  2. 刪除殘留的空 master.info
    rm -f /data/mysqldata/mydata/master.info
  3. 重新執行 CHANGE MASTER TO ...
  4. 啟動 Slave:START SLAVE; 驗證 SHOW SLAVE STATUS\G 顯示 Slave_IO_Running: Yes, Slave_SQL_Running: Yes

配置檔關鍵參數參考

[mysqld]
server-id=3306
log_bin=/data/mysqldata/binlog/mysql-bin
relay_log=/data/mysqldata/relaylog/mysql-relay-bin
log_slave_updates=1
slave_skip_errors=1022,1032,1062
auto_increment_increment=2
auto_increment_offset=1

經驗總結

  • 基礎設施準備(目錄、權限、用戶)必須在執行 SQL 前完成
  • 錯誤現象可能誤導(以為是 Bug),需正向(配置檢查)+ 反向(日誌分析)雙向推理
  • 熟悉 perror 查詢系統錯誤碼:perror 13 → Permission denied
  • 操作前備份、操作後驗證、文檔記錄變更
copyright © 萬盛學電腦網 all rights reserved