堡垒机的实施过程中,因为做了双机,所以要对两台堡垒机进行数据库的主从同步和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同步表忽略机制以后,在进行补充)