-
Notifications
You must be signed in to change notification settings - Fork 444
v2.4.6版本增加延迟同步功能
Vinllen Chen edited this page Jun 17, 2020
·
5 revisions
v2.4.6版本开始,MongoShake通过incr_sync.target_delay
参数支持延迟同步的功能,类似MongoDB主从同步的延迟同步SlaveDelay。
例如,设置目的端延迟同步为源端滞后30分钟,单位为秒:
incr_sync.target_delay = 1800
默认设置0表示不启用。
查看当前配置:
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"}
- 如果配置文件和restful同时进行配置,按restful配置为准。
- restful的配置不持久化,也就是说如果中途MongoShake发生重新启动后,将会继续以配置文件的为准。
- 内部实现中,数据的延迟以一批oplog为单位(一次从源端拉取的oplog),也就是说,对于一批oplog,判断第一条的时间戳跟需要delay的时间戳对比,如果大于则这一批进行同步,反之将会block)。
- 用户需要保证源端oplog表的大小能够撑住至少设置的TargetDelay的大小,如果TargetDelay是1小时,但是oplog最多只能存储30分钟,那肯定是不行的。
- restful调整的接口不会持久化,发生重启后将还以配置文件为准。