如果程序代码写得合理的话,读取Oplog对业务理论上讲不会有太大影响。Oplog是一个cap collection,每次都往头部读取,即可获得Oplog的内容。我就是通过程序代码读取Oplog,然后将数据流写入文件,从而对Oplog进行备份的。
但是个人建议还是升级版本使用change stream 。因为读取Oplog就是使用数据库内部的东西,这样不利于程序的后期维护。而如果使用db.xx.watch()这些数据库提供的接口,可更好地适应MongoDB的发展。change stream就是为了用户不用读取Oplog而设计的。
如果线上有做Master-Secondary架构的话,是可以进行平滑升级的,这样处理更加高效。
希望回答对你有帮助。
gaorb 已回答的问题
你好,我了解了一下,mongoShake可以实现MongoDB副本集间的单向同步,那么是否可以实现同一个库中的两个集合的同步?因为我只需要对库中的一张表进行这样的操作,但是在mongoShake的collect.conf中只看到了配置数据库地址以及黑名单白名单,没有找到在哪定义哪张表的数据需要同步以及同步到对应的哪一张表
你说的使用mongoShake抽取表的oplog日志能不能具体一些,因为我没有在官方的说明文档里找到这类说明及操作方式
同一个库2个集合可以同步的。
mongo提供的Change Stream仅支持3.6+版本的mongo,在不能升级版本的情况下,是否只有通过oplog实现触发器的功能,一直读取oplog,是否会对服务器产生较大的压力?