pika icon indicating copy to clipboard operation
pika copied to clipboard

主从复制bug汇总

Open chejinge opened this issue 2 years ago • 0 comments

1.slave节点写引擎可能会触发rocksdb的限速,导致写入耗时长,可能超过了20s。因此就触发了master的synctimeout,master会将slave删除掉。master将slave删除掉之后,也会删除其对binlog文件的引用,所以会删除binlog。如果期间一直有写入,那么等到slave重新连master之后,会发现binlog文件被删除,就需要重新同步历史。(已修复)

2.slave节点在处理binlogsync请求时,是将请求放到了bgworker后台线程进行处理的。但是在写rocksdb时,会丢到另一个bgworker后台线程去执行。会阻塞多个线程。(已修复)

3.master节点的checksynctimeout逻辑会在距离LastSendTime 2秒时向slave发送心跳包,但条件是只有距离lastSendTime超过2秒并且slavenode的sent_offset == acked_offset,当出现1这种情况时,会导致心跳包也发不出去。(无须改动)

4.当前的主从复制,使用syncwindow限制了发送的速度,但是没有感知slave节点的压力。(无须改动)

5.slave重连master之后,重新初始化了binlogFileReader,但是没有初始化write_queue和sync——window,多线程并发执行时,可能导致sent_offset和acked_offset永远不一致,这样可能导致不一致。(已修复)

  1. 主从复制老主降备手动slaveof的过程中会出现判断 sent_offset == acked_offset的逻辑,当出现不相等的时候,会导致主从slaveof ERROR的情况。(@yuecai)

chejinge avatar Jul 28 '23 10:07 chejinge