MongoDB oplog (類似于 MySQL binlog) 記錄數(shù)據(jù)庫的所有修改操作,除了用于主備同步;oplog 還能玩出很多花樣,比如
* 全量備份 + 增量備份所有的 oplog,就能實(shí)現(xiàn) MongoDB 恢復(fù)到任意時(shí)間點(diǎn)的功能
* 通過 oplog,除了實(shí)現(xiàn)到備節(jié)點(diǎn)的同步,也可以額外再往單獨(dú)的集群同步數(shù)據(jù)(甚至是異構(gòu)的數(shù)據(jù)庫),實(shí)現(xiàn)容災(zāi)、多活等場景,比如阿里云開源的
MongoShake
<https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fgithub.com%2Falibaba%2FMongoShake>
就能實(shí)現(xiàn)基于 oplog 的增量同步。
* MongoDB 3.6+ 版本對 oplog 進(jìn)行了抽象,提供了 Change Stream
<https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fdocs.mongodb.com%2Fmanual%2FchangeStreams%2F>
的接口,實(shí)際上就是能不斷訂閱數(shù)據(jù)庫的修改,基于這些修改可以觸發(fā)一些自定義的事件。
* ......
總的來說,MongoDB 可以通過 oplog 來跟生態(tài)對接,來實(shí)現(xiàn)數(shù)據(jù)的同步、遷移、恢復(fù)等能力。而在構(gòu)建這些能力的時(shí)候,
熱門工具 換一換