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