下午3點,伺服器當機,隔了幾分鐘之後恢複,遠端連線Windows虛擬機器,顯示非順利關機,應該是機房跳閘了
網站有些不正常,應該是非順利關機資料庫損壞所致,需要修複資料
登入從伺服器,show slave status\G,顯示同步狀態還是正常的
於是關閉主伺服器的mysql,運行
/mysql/bin/myisamchk -r /mysql/data/bbs/*.MYI
修複資料庫
完成之後開啟mysql
service mysql start
網站正常了,再登入從伺服器查看show slave status\G
Slave_IO_Running: No
Slave_SQL_Running: Yes
同步居然出問題了
令一台從伺服器出的問題剛好相反,此從庫位於最末端,和主從庫是一台伺服器,也因為掉電資料損毀了
Slave_IO_Running: Yes
Slave_SQL_Running: No
為什麼修複之前同步是正常的,這個有點搞不明白了
當時主伺服器掛掉之後本來考慮立即將串連資料庫改到從庫上面,但因為配置的不是互為主從模式,而從和主目前同步是正常的,如果這樣切換回來又需要重新設定主從,所以還是選擇耽誤些時間修複主要資料庫,誰知道修複之後同步反而終止了
有個問題需要搞明白:
今後肯定要修改為互為主從模式,已方便主庫出狀況的時候隨時切換,然後修複主庫之後切換回來,但不知道這樣會不會依然出現上述狀況
看來今晚又要熬夜做配置了
先整理下互為主從的配置步驟:
三台msyql伺服器,兩台互為主從,另一台隨便作為哪個主的從都可以,只是用來做資料定時備份。互為主從的伺服器要求能隨時切換,肯定不能是同一台伺服器裡的虛擬機器,因為母機當掉了兩台mysql也都當掉,就失去了切換的意義
伺服器A:58.55.142.168
兩台mysql伺服器a1和a2處於內網
a1:10.0.0.82
a2:10.0.0.81
伺服器B1:161.18.41.72
1.主配置a1vi /etc/my.cnf 確定以下參數 server-id = 1# 啟動logbinlog-bin=mysql-bin# 記錄檔保留天數,以免日誌持續增長撐滿硬碟expire-logs-days = 7# 需要同步資料庫,多個資料庫用逗號分開發現啟用了replicate-do-db=bbs,ucenter居然不能同步,還是換回replicate-ignore-db=mysql,test這個參數,好在重新啟用之後同步正常了,但是和主庫之間少了些資料)# replicate-do-db=bbs,ucenter# 排除同步資料庫replicate-ignore-db=mysql,test# 配置從庫上的更新操作是否寫入二進位檔案。# 如果這台從庫,還要做其他從庫的主庫,那麼就需要打這個參數,以便從庫的從庫能夠進行日誌同步。log-slave-updates 2.主配置B1 vi /etc/my.cnf確定以下參數 server-id = 3log-bin=mysql-binexpire-logs-days = 7replicate-ignore-db=mysql,testlog-slave-updates 3.從配置a2 vi /etc/my.cnfserver-id = 2replicate-ignore-db=mysql,test# 僅作為從配置logbin好像不需要開事實證明需要開)log-bin=mysql-binexpire-logs-days = 7# 這個沒必要開# log-slave-updates 同步設定參考:http://tt520.blog.51cto.com/4530575/1122155不同的地方就是原來的主庫也啟動從複製
CHANGE MASTER TO MASTER_HOST='161.18.41.72', MASTER_PORT=3306,MASTER_USER='slave', MASTER_PASSWORD='123456';
start slave;
另外以前的從庫必須刪除data目錄下的master.info,relay-log.info,localhost-relay-bin.xxxxx這些檔案
然後啟動mysql重新設定從複製
CHANGE MASTER TO MASTER_HOST='58.55.142.168', MASTER_PORT=3306,MASTER_USER='slave', MASTER_PASSWORD='123456';
start slave;
需要注意的地方,配置同步時主庫必須鎖表,防止資料寫入,等兩邊庫都顯示同步狀態正常再解鎖,擔心鎖表失效的話可以暫時斷開網站與mysql的串連是一樣的
2013.01.20 測試結果: 10.0.0.81 本地從庫沒過多久就同步出錯,不知道是不是因為用網頁串連資料庫查看同步狀況導致,好像discuz論壇點擊就產生寫操作,我把資料庫鎖定為唯讀狀態無法訪問 161.18.41.72 同步正常,但把網站串連切換到這個庫的時候,主庫10.0.0.82顯示同步狀態正常,但沒有同步他的資料,切換回來兩邊同步狀態都報錯了 Slave_IO_Running: Yes Slave_SQL_Running: No 互為主從配置看來失敗了,目前看來上述配置依然是單一主從配置 |
用兩台虛擬機器測試互為主從,修改了一些配置 10.0.0.81 10.0.0.83 10.0.0.81 vi /etc/my.cnf server-id = 1 log-bin=mysql-bin replicate-ignore-db = test,mysql,information_schema,performance_schema log-slave-updates auto_increment_offset = 1 auto_increment_increment = 2 slave-skip-errors=all 10.0.0.83 vi /etc/my.cnf server-id = 3 log-bin=mysql-bin replicate-ignore-db = test,mysql,information_schema,performance_schema log-slave-updates auto_increment_offset = 2 auto_increment_increment = 2 slave-skip-errors=all |
分別在兩邊的資料庫插入資料,檢測同步成功
log-slave-updates 不加上=on參數也能用
slave-skip-errors=all 跳過錯誤,以免錯誤引起同步終止
這兩個參數主要解決Mysql複製技術中的主鍵衝突 auto_increment_offset = N 第N台機器 auto_increment_increment = 5 總共多少台機器 假設有5台機器,因此,第一台機器的序列為:1,6,11,…;第二台機器的序列為:2,7,12,…;第三台機器的序列為:3,8,13,…等等 這樣自增長主鍵不會重複 |