Mysql主機斷電導致複製出錯 server_errno=1236

wenaini發表於2009-01-17

前2天真是tmd忙啊。。。每天都這麼多事情,運維不好玩- -

[@more@]

機房某臺伺服器短路,造成整個機櫃跳閘。其中數臺伺服器是mysql的資料庫主機,結果重啟後,slave的db上都發現複製停止,err裡發現下面的資訊:

[ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236)

[ERROR] Got fatal error 1236: 'Client requested master to start replication from impossible position' from master when reading data from binary log

[Note] Slave I/O thread exiting, read up to log 'mysql-bin.000008', position 753871857

這個是比較著名的mysql的bug,斷電以後master重新生成了binlog,而slave不知道,仍然試圖去讀取舊的binlog的之後的內容,造成了複製錯誤,重新change master一下:

CHANGE MASTER TO
MASTER_HOST='192.168.1.184',
MASTER_USER='rep',
,
MASTER_LOG_FILE='mysql-bin.000009',
MASTER_LOG_POS=4;

就ok了。

後來又發現很多slave因為duplicate key停止了,為了讓db先跑起來,用了--slave-skip-errors

剛以為沒事了,網路故障導致內網網路風暴。。。。。所有伺服器內網都開始阻塞,應用基本都癱瘓了。一邊讓IDC去機房排錯。一邊開始準備調整db和前端走外網地址,沒辦法,一小時200w啊。。。

change master的方法是:

1.stop slave

2.備份下master.info

3.使用完整的change master 語句修改複製配置:

CHANGE MASTER TO
MASTER_HOST='222.74.100.184',
MASTER_USER='rep',
,
MASTER_LOG_FILE='HBDB184-bin.073',
MASTER_LOG_POS=258096961;

4.show slave statusG 確認修改資訊生效後,start slave

如果僅僅執行CHANGE MASTER TO MASTER_HOST='222.74.100.184';可能導致MASTER_LOG_FILE被自動設定為'HBDB184-bin.001'哦

接下來還要新增外網的rep使用者,調整防火牆,新增應用使用者的外網帳戶,弄到一般,機房那裡來訊息,好了- -!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/79686/viewspace-1016235/,如需轉載,請註明出處,否則將追究法律責任。

相關文章