設定好主從同步之後,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服務器配置爲主-從-從模式