问题事件记录:

【问题描述】:pika 3.0.5 版本搭建的双主环境下午2点半左右突然无法同步
【问题排查】:
1、 通过info 查看双主的状态变为0,即双主断开
2、 通过日志排查发现,有报错:

            W0103 18:37:30.999956  2647 pika_trysync_thread.cc:91] Reply from master after trysync: ERR InvalidOffset
W0103 18:37:31.000108  2647 pika_trysync_thread.cc:117] Connect to master error: ERR InvalidOffset
I0103 18:37:31.000123  2647 pika_server.cc:735] close read-only mode
I0103 18:37:31.000130  2647 pika_trysync_thread.cc:121] Because the invalid filenum and offset, close the connection between the peer-masters
sh: line 0: kill: -: arguments must be process or job IDs

通过上面的日志内容可以看出,是因为从库偏移量比主库要大, 所以不能建立主从关系。

【解决方案】:
1、根据pika官网提示,通过 SLAVEOF IP PORT 操作,完成数据同步。
Pika3.0.5双主环境出现不同步的情况_第1张图片

但是执行完后,双主依然没有建立连接,状态还是0

2、 上面没有成功,继续尝试其他办法。于是通过 SLAVEOF IP PORT FORCE进行同步,结果双主还是没有建立连接。
Pika3.0.5双主环境出现不同步的情况_第2张图片

3、清空有问题master节 点的db,dbsync,log 三个目录,注意是清空目录里面的内容,不是删除这三个目录。然后重启服务。通过 SLAVEOF IP PORT FORCE进行同步,结果双主还是没有建立连接。

4、最后排查发现有问题的 28348 binlog文件不存在,为什么会不存在呢?
原因是expire-logs-nums 设置的太小,默认,此参数的值是10,需要调大一点,再执行同步操作
SLAVEOF IP PORT FORCE
同步完成后info的结果:
Pika3.0.5双主环境出现不同步的情况_第3张图片

5、源master的日志
同步中
Pika3.0.5双主环境出现不同步的情况_第4张图片

同步完成并双主建立连接后的日志信息:
Pika3.0.5双主环境出现不同步的情况_第5张图片