1. 背景
当前的数据库系统生态中,大部分系统都支持多个节点实例间的数据同步机制 ,如Mysql Master/Slave主从同步,Redis AOF主从同步等,MongoDB更是支持3节点(及以上)ReplicaSet同步,上述机制很好的支撑了一个逻辑单元的数据冗余及HA。
跨逻辑单元(3节点实例、主从实例),甚至跨单元、跨数据中心的数据同步,在业务层有时候就显得很重要,可以支持同城多机房的负载均衡,多机房的互备,甚至是异地多数据中心容灾(比如 光纤被挖断、地震等小概率事件)和多活。
基于以上背景,云数据库MongoDB版本正式推出MongoDB实例间的双向同步产品“MongoDB云上灾备”(也称BLS),助力企业快速复制阿里巴巴异地灾备、多活架构。
产品地址
2. 产品介绍
“MongoDB云上灾备”通过从源数据库拉取Oplog(Operations Log)数据(其是MongoDB的日志,所有对数据库的修改操作都会保存到oplog中),然后将其传输到目的数据库进行回放实现复制的目的。我们通过构造两条复制链路实现双向同步的功能,基于此,可以实现灾备和多活的功能。
上图给出了整体复制同步的流程。目前,“MongoDB云上灾备”支持的源、目的数据库类型为ReplicaSet副本集,Sharding模式即将上线,不支持单节点模式。为了减缓主节点的压力,系统从备(Secondary)上拉取Oplog。