Skip to content

v2.4.6版本增加延迟同步功能

Vinllen Chen edited this page Jun 17, 2020 · 5 revisions

v2.4.6版本开始,MongoShake通过incr_sync.target_delay参数支持延迟同步的功能,类似MongoDB主从同步的延迟同步SlaveDelay。

配置说明

1. 通过配置文件配置

例如,设置目的端延迟同步为源端滞后30分钟,单位为秒: incr_sync.target_delay = 1800 默认设置0表示不启用。

2. 通过restful接口动态调整

查看当前配置:

vinllen-ali@ ~/code/MongoShake$ curl 127.0.0.1:9100/sentinel
{"OplogDump":0,"DuplicatedDump":false,"Pause":false,"TPS":0,"TargetDelay":-1}

可以看到TargetDelay默认为-1(小于等于0表示不启用),动态调整延迟为120秒:

vinllen-ali@ ~/code/MongoShake$ curl -X POST --data '{"TargetDelay":0}' 127.0.0.1:9100/sentinel/options
{"sentinel":"success"}

3. 需要注意的地方

  1. 如果配置文件和restful同时进行配置,按restful配置为准。
  2. restful的配置不持久化,也就是说如果中途MongoShake发生重新启动后,将会继续以配置文件的为准。
  3. 内部实现中,数据的延迟以一批oplog为单位(一次从源端拉取的oplog),也就是说,对于一批oplog,判断第一条的时间戳跟需要delay的时间戳对比,如果大于则这一批进行同步,反之将会block)。
  4. 用户需要保证源端oplog表的大小能够撑住至少设置的TargetDelay的大小,如果TargetDelay是1小时,但是oplog最多只能存储30分钟,那肯定是不行的。
  5. restful调整的接口不会持久化,发生重启后将还以配置文件为准。
Clone this wiki locally