今天一哥們發來求助,說主從不同步了,他發給主從的報錯資訊,發現從error日誌報錯沒有截取到show slave status\G的相關資訊),但是通過查看日誌資訊報錯如下:
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/140103/0031514F2-0.jpg" style="float:none;" title="err1.png" alt="wKioJlLCd2ayVzOnAABZB0BrYwM314.jpg" />
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/140103/0031514057-1.jpg" style="float:none;" title="err2.png" alt="wKioOVLCd1_hnRLVAAD8CzSb0ns805.jpg" />
上面的報錯資訊顯示無法讀取relay日誌,有可能是中繼日誌損壞~~~根據經驗,查看到他的中繼檔案名稱中帶有localhost,就斷定肯定是由於在mysql下在啟動並執行情況下修改了主機名稱,導致relay記錄檔損壞。
他們當前使用的資料庫是:Percona-Server-5.5.24-rel26.0-256.Linux.x86_64
這時讓我比較驚訝的~~~~呵呵~~~~目前他公司沒有DBA...)
解決辦法:
首先,確認下從伺服器是否可以停止(呵呵。。這種情況下也不得不停止服務了),讓他停止mysqld服務:註:在停止服務前先查看:show slave status\G,查看下從的同步狀態
# /etc/init.d/mysqld stop
然後,找到中繼日誌的目錄,把相關中繼日誌相關的檔案全部刪除
其次,啟動mysqld服務,reset slave的主從串連資訊,再重新串連到主:# /etc/init.d/mysqld start
# mysql -uroot -p
mysql>
reset slave all; #這裡要用reset salve all 完全清除之前的同步狀態資訊mysql> change master to master_host='10.11.10.25',master_user='repl_user',master_password='XXXX',master_log_file='mysql-bin.000072',master_log_pos=455578221;mysql> start slave;
mysql> show slave status\G
最後他按照我的給步驟來,最終於看到了兩個大大的 Yes.....
根據這哥們公司營運對於出現這個故障的一點總結,對於新手來說很重要,老手都懂的~~~哈哈:1. binlog 和 relaylog記錄檔名要自己定義名字,並寫入設定檔!2. 操作之前得檢查...(廢話,但是很多人一來直接操作)3. 營運不正常化(主機名稱都localhost),應用基礎操作沒定義好~~4. ....
本文出自 “->” 部落格,謝絕轉載!