【MySQL營運】解決由於中繼日誌報錯導致主從故障一例

來源:互聯網
上載者:User


今天一哥們發來求助,說主從不同步了,他發給主從的報錯資訊,發現從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. ....



本文出自 “->” 部落格,謝絕轉載!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.