20110802

新增 mysql slave 同步錯誤


當臨時新增ㄧ台mysql slave之後, slave 的出現下列的錯誤訊息

110802 18:34:46 [ERROR] Error reading packet from server: File './mysql-bin.000001' not found (Errcode: 2) ( server_errno=29)

這個時候發生的問題是 slave 找不到 master 的 binlog 檔案 mysql-bin.000001, 這個時候可以用下面的方式解決這個問題,

[root@slave mysql/bin]./mysql -uroot -p
# 進入mysql command console,

mysql > show slave status\G
# 確認目前的同步狀態, 應該會顯示 mysql-bin.000001 為目前的 master 同步索引檔,

mysql > stop slave;
# 停止 slave 的同步動作,

mysql > CHANGE MASTER TO MASTER_LOG_FILE = 'master_log_name';
# master_log_name 是這一個 master 這一次起動的時候的第一個檔案的檔名, 假設上一次維護停止 mysql 的服務, 然後再起動 mysql 服務的時候, 會建一個新的 mysql-bin.[數字] 的檔案, 這個檔案名稱就是要填入 master_log_name 的變數,

mysql > start slave;
# 啟動 slave 的同步動作,

mysql > show slave status\G
# 確認目前的同步狀態, 應該會顯示 mysql-bin.[數字] 為目前的 master 同步索引檔,

mysql > exit;
# 離開mysql command console,

[root@slave mysql/bin]cat ../var/[hostname].err
# 確認前述 [ERROR] 有沒有被解決

參考資料來源