MongoDB云上灾备:如何快速复制阿里异地灾备、多活架构

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB云上灾备BLS产品正式发布

1. 背景

  当前的数据库系统生态中,大部分系统都支持多个节点实例间的数据同步机制 ,如Mysql Master/Slave主从同步,Redis AOF主从同步等,MongoDB更是支持3节点(及以上)ReplicaSet同步,上述机制很好的支撑了一个逻辑单元的数据冗余及HA。
  跨逻辑单元(3节点实例、主从实例),甚至跨单元、跨数据中心的数据同步,在业务层有时候就显得很重要,可以支持同城多机房的负载均衡,多机房的互备,甚至是异地多数据中心容灾(比如 光纤被挖断、地震等小概率事件)和多活。
  基于以上背景,云数据库MongoDB版本正式推出MongoDB实例间的双向同步产品“MongoDB云上灾备”(也称BLS),助力企业快速复制阿里巴巴异地灾备、多活架构。
  产品地址

2. 产品介绍

  “MongoDB云上灾备”通过从源数据库拉取Oplog(Operations Log)数据(其是MongoDB的日志,所有对数据库的修改操作都会保存到oplog中),然后将其传输到目的数据库进行回放实现复制的目的。我们通过构造两条复制链路实现双向同步的功能,基于此,可以实现灾备和多活的功能。
15331166248072_zh-CN.png
  上图给出了整体复制同步的流程。目前,“MongoDB云上灾备”支持的源、目的数据库类型为ReplicaSet副本集,Sharding模式即将上线,不支持单节点模式。为了减缓主节点的压力,系统从备(Secondary)上拉取Oplog。

全量加增量

  同步模型采用全量+增量的方式:在创建时会对源数据库进行全量同步,后续的修改通过增量来同步。

双活以及多活模型

  由于复制是异步模式,所以对于双活/多活模式,由用户保证不会对同一个唯一键同时修改,因为同时修改将可能导致数据错乱。目前冲突策略可以为覆盖或者忽略。后续将会上线校验程序,在用户操作相同唯一键时提供接口报错。

高效性保证

  同步延迟因地域和网络不同而不同,理论TPS能够接近20万(每秒传输20万条oplog)。为了保证批量传输的高效性,数据发送存在缓存缓存机制,所以极限情况下,单条oplog时延可能为1秒。正常情况下,全球范围内数据同步时延小于3秒。

  • 源数据库并行拉取,解决冲突依赖
  • 并行发往Kafka通道
  • 目的端在解决依赖的同时并行写入数据库

环形复制

  为了防止环形复制(数据从源复制到目的,又从目的复制到源),在Oplog日志中打入gid解决该问题。

可靠性传输

  支持断点续传,实例重启时数据同步不受影响。

高可用

  链路同步具有高可用性,如果同步进程挂掉,会有备进程启动接管服务。

限制说明

  • DDL语句同步暂未开放,所以如果修改了源、目的数据的索引操作,无法同步。
  • 目的数据库需要创建,暂不支持在2个已有MongoDB实例之间直接搭通道。
  • 当前只支持双活功能(2个MongoDB实例之间同步数据),后续会上线多活功能(多个MongoDB实例之间同步数据)。

3. 架构

  在“MongoDB云上灾备”产品中,主要有3大组件:

  • BLS Manager。中心控制模块,负责Collector、Receiver的调度、监控等任务。
  • BLS Collector。数据采集模块,负责从源MongoDB数据库拉取Oplog数据后发送到Kafka通道。
  • BLS Receiver。数据回放模块,负责从Kafka通道中获取数据,然后写入目的MongoDB数据库。

下图展示了系统的整体架构图。
7bef6cfb487710fd12bf07a9b80bf0bd.png

4. 用户使用案例

  高德地图 App是国内首屈一指的地图及导航应用,阿里云MongoDB数据库服务为该应用提供了部分功能的存储支撑,存储亿级别数据。现在高德使用国内三中心的策略,通过地理位置等信息路由最近中心提升服务质量,业务方(高德地图)通过用户路由到三个城市数据中心,如下图所示,机房数据之间无依赖计算。数据在不同中心的同步通过“MongoDB云上灾备”产品实现。
f3f3d43046ef6d5c052221127d9e7dde.png
  这三个城市地理上从北到南横跨了整个中国 ,这对多数据中心如何做好复制、容灾提出了挑战,如果某个地域的机房、网络出现问题,可以平滑的将流量切换到另一个地方,做到用户几乎无感知?
  目前策略是,拓扑采用机房两两互联方式,每个机房的数据都通过“MongoDB云上灾备”异步地将数据同步到另外两个机房。然后通过高德的路由层,将用户请求路由到不同的数据中心,读写均发送在同一个数据中心,保证一定的事务性。这样保证每个数据中心都有全量的数据(保证最终一致性) 。任意机房出现问题,另两个机房中的一个可以通过切换后提供读写服务。下图展示了城市1和城市2机房的同步情况。
gd1.png
遇到某个单元不能访问的问题,Manager通过“MongoDB云上灾备”产品管理接口,可以获得各个机房的同步偏移量和时间戳,通过判断采集和写入值即可判断异步复制是否在某个时间点已经完成。再配合业务方的DNS切流,切走单元流量并保证原有单元的请求在新单元是可以读写的,如下图所示。
gd2.png

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
4月前
|
监控
阿里商旅账单系统架构设计实践问题之对账模型包括内容问题如何解决
阿里商旅账单系统架构设计实践问题之对账模型包括内容问题如何解决
|
15天前
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB复制集的体系架构
MongoDB的复制集是一种集群技术,由一个Primary节点和多个Secondary节点组成,实现数据的高可用性。Primary节点处理写入请求,Secondary节点同步数据。当Primary节点故障时,Secondary节点可通过选举成为新的Primary节点。视频讲解和示意图详见正文。
|
1月前
|
NoSQL MongoDB Docker
求助,有没有大神可以找到arm64架构下mongodb的3.6.8版本的docker镜像?
在Docker Hub受限的情况下,寻求适用于ARM架构的docker镜像资源或拉取链接,以便在x86架构上获取;内网中的机器为ARM架构,因此优先请求适合ARM的Docker镜像或Dockerfile,非常感激您的帮助。
|
4月前
|
数据格式
阿里商旅账单系统架构设计实践问题之系统设计中的清结算系统问题如何解决
阿里商旅账单系统架构设计实践问题之系统设计中的清结算系统问题如何解决
|
5月前
|
缓存 负载均衡 Java
Spring Boot 优雅实现多活架构(Active-Active Architecture)
【6月更文挑战第20天】实现多活架构(Active-Active Architecture)意味着在多个地理位置或多个数据中心同时运行应用系统,使其具备高可用性、灾难恢复和负载均衡能力。以下从理论到实践详细介绍如何使用 Spring Boot 构建多活系统。
99 6
|
4月前
|
搜索推荐 Java
阿里商旅账单系统架构设计实践问题之需要账单数据表达式引擎问题如何解决
阿里商旅账单系统架构设计实践问题之需要账单数据表达式引擎问题如何解决
|
4月前
|
监控 供应链 搜索推荐
阿里商旅账单系统架构设计实践问题之账单详情数据未同步会带来问题如何解决
阿里商旅账单系统架构设计实践问题之 账单详情数据未同步会带来问题如何解决
|
4月前
|
存储 搜索推荐
阿里商旅账单系统架构设计实践问题之差错处理(平账)的主要目的问题如何解决
阿里商旅账单系统架构设计实践问题之差错处理(平账)的主要目的问题如何解决
|
5月前
|
存储 NoSQL MongoDB
MongoDB技术架构详解
MongoDB技术架构详解
|
27天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
下一篇
无影云桌面