堡壘機的實施過程中,因爲做了雙機,所以要對兩臺堡壘機進行數據庫的主從同步和HA配置。
在部署完mysql主從同步以後,發現同步會有中斷的現象。
中斷表現爲
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1062
經過排查,發現了引起這一問題的原因。由於在在實施階段,每次對堡壘機進行測試,都要分別對兩臺機器進行訪問操作,執行相應的堡壘機功能。在配置mysql主從同步的時候,將wssg_system_params這張表裏面的linux-hos 改爲了10.2.29.216(HA的VIP)。由於兩個庫裏面全是216這個地址,且HA活動在209機器上面,在直接訪問210的時候,這個表裏面的地址是失效的,但是訪問記錄還是會產生,導致wssg_dcmdhis這張表裏面的主鍵自增長,不能正常同步。
解決辦法1(有效,但是不能再對wssg_system_params和wssg_serverregister這兩張表進行修改,不然數據會同步以後出錯)
# A B
服務器停止同步
STOP SLAVE;
# A B
服務器清空Master日誌
RESET MASTER;
# A B 服務器鎖表(鎖表狀態下不能終止mysql進程,否則會失敗)
FLUSH TABLES WITH READ LOCK;
將209的數據導入到210.
# 查看A 服務器主機狀態(記錄二進制開始文件,位置,下面需要用到)
SHOW MASTER STATUS;
# 修改B 服務器配置
CHANGE MASTER TO
MASTER_HOST='10.2.29.209',MASTER_USER=’backup’,
MASTER_PASSWORD='itc123',MASTER_LOG_FILE=’binlog.000001′,MASTER_LOG_POS=107;
# 開啓B 服務器同步進程
START SLAVE;
# 查看B 服務器同步狀態是否正常
SHOW SLAVE STATUS;
#查看B 服務器主機(記錄二進制開始文件,位置)
SHOW MASTER STATUS;
# 修改A 服務器配置
CHANGE MASTER TO MASTER_HOST=’10.2.29.210′,MASTER_USER=’backup’,MASTER_PASSWORD=’itc1
23′,MASTER_LOG_FILE=’binlog.000001′,MASTER_LOG_POS=107;
# 開啓A 服務器同步進程
START SLAVE;
# 分別查看A B
服務器同步狀態,確定是否成功
SHOW SLAVE STATUS;SHOW MASTER STATUS;
# 解鎖A B 服務器
UNLOCK TABLES;
通過這個辦法能是同步從當前時刻開始,兩臺機器裏面的表數據,有改動的,就會有被同步。所以這個辦法要求不能修改以上相關的那兩張表
解決辦法2(採取忽略掉關鍵表的方式進行同步。理論上最合適的方案,但我做的時候會將我忽略的表刪除掉,很詭異,等我熟悉了mysql同步表忽略機制以後,在進行補充)