如果程序代码写得合理的话,读取Oplog对业务理论上讲不会有太大影响。Oplog是一个cap collection,每次都往头部读取,即可获得Oplog的内容。我就是通过程序代码读取Oplog,然后将数据流写入文件,从而对Oplog进行备份的。
但是个人建议还是升级版本使用change stream 。因为读取Oplog就是使用数据库内部的东西,这样不利于程序的后期维护。而如果使用db.xx.watch()这些数据库提供的接口,可更好地适应MongoDB的发展。change stream就是为了用户不用读取Oplog而设计的。
如果线上有做Master-Secondary架构的话,是可以进行平滑升级的,这样处理更加高效。
希望回答对你有帮助。
gaorb 已回答的问题
mongo提供的Change Stream仅支持3.6+版本的mongo,在不能升级版本的情况下,是否只有通过oplog实现触发器的功能,一直读取oplog,是否会对服务器产生较大的压力?