mysql 主從同步情況跟蹤記錄

 設定好主從同步之後,show slave status\G顯示同步正常,但是不直觀,第一次弄這個,擔心數據是否完全同步,決定使用測試網站連接從服務器的數據庫看看,發現網站數據同步正常。

因爲主從mysql服務器其實是一個服務器上的兩臺虛擬機,萬一服務器出問題,主從mysql其實都會當掉,還是不保險,所以準備再配置一個異地從。配置主從的時候需要停止主服務器,網站也不能訪問,有點不划算,既然這從服務器數據同步正常,就嘗試配置下主-從-從模式好了

一主帶一叢,從另外爲主再帶一叢

 

配置思路:暫停本地從服務器,拷貝數據到異地從服務器上,配置本地從服務器和異地從同步,然後再開啓本地從服務器,應該自動和主服務器同步了

想法是好的,但操作出錯了

爲停止從服務器上的數據同步操作,我使用了鎖表命令 FLUSH TABLES WITH READ LOCK;

結果 解鎖UNLOCK TABLES; 之後發現和主之間的同步出錯了

分析原因:

鎖表之後同步並沒有停止,Read_Master_Log_Pos:參數不一致了

網上查了不少恢復同步的辦法,均失敗告終,重新配置主從同步吧,還是得暫停網站了

http://tt520.blog.51cto.com/4530575/1117734

 

重新配置主從完必之後,再重新來配置本地從和異地從之間的同步

本地從服務器的外網IP229.119.8.11

正確的操作方法應該是:

 

1.添加授權並停止本地從同步,清理日誌

GRANT REPLICATION SLAVE ON *.* to slave@'%' identified by '123456';

flush privileges;

stop slave;

reset master;

2.鎖表

FLUSH TABLES WITH READ LOCK;

3.打包數據庫

4.異地從服務器下載恢復數據,並開啓從複製

 

CHANGE MASTER TO MASTER_HOST='229.119.8.11', MASTER_PORT=3306,MASTER_USER='slave', MASTER_PASSWORD='123456';

 

start slave;

檢查同步狀態show slave status\G

5.本地從數據庫解鎖

UNLOCK TABLES; 

做到這步的時候出了點小問題 http://tt520.blog.51cto.com/4530575/1122123

6.本地從服務器恢復與主同步

start slave;

檢查與主同步狀態show slave status\G

兩臺從服務器都正常

 

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

所以說單純看這個狀態不直觀,網站連接數據庫查看數據同步狀態纔是最可靠的,有沒新帖一目瞭然,位於最尾端的異地從服務器並沒有新帖,也就是說同步還是有問題

網上搜索了下,原來需要Log-slave-updates參數

配置從庫上的更新操作是否寫入二進制文件,如果這臺從庫,還要做其他從庫的主庫,那麼就需要打這個參數,以便從庫的從庫能夠進行日誌同步。

編輯本地從服務器的my.cnf

vi /etc/my.cnf

添加 log-slave-updates

再重新配置本地從與異地從服務器之間的同步,好在本地主服務器不需要再停止了

 

步驟1-6再重新運行一遍,這次成功了,mysql服務器配置爲主-從-從模式

 

 

有點不明白的地方,據說從服務器不能有寫操作,否則會導致同步出問題,我考慮的解決辦法是作爲環狀主從結構,3臺機器互爲主從,這樣就不擔心有時用測試論壇連接從數據庫監測同步狀況的時候出問題了,但做這個配置需要停主服務器,所以暫時還是放棄了

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章