如何实现不同MongoDB实例间的数据复制?

2023-09-13 10:12:19

 作为一种Schema Free文档数据库,MongoDB因其灵活的数据模型,支撑业务快速迭代研发,广受开发者欢迎并被广泛使用。在企业使用MongoDB承载应用的过程中,会因为业务上云/跨云/下云/跨机房迁移/跨地域迁移、或数据库版本升级、数据库整合、数据库拆分、容灾等业务场景,存在MongoDB迁移或同步的业务诉求。

在MongoDB迁移的过程中,其迁移时间、迁移数据准确性及迁移过程中业务的停机要求无疑是影响迁移能否成功的关键因素。由此,如何选择合适的迁移工具,提供高效、安全、准确的迁移能力至关重要。

01  传统数据迁移方案

传统的MongoDB迁移一般基于mongodump及mongorestore等导入导出工具进行数据搬迁,使用这种搬迁工具一般存在如下问题:

  • 停机时间长,由于mongodump/mongorestore不支持增量数据的采集复制,在MongoDB迁移期间,要求业务停机,停服时间通常高达数小时/上天,对业务的挑战极大。特别当迁移难度较高时,通常反复多次迁移,业务停服时间更不可控。

  • 可靠性不高,不提供迁移过程的观测、诊断与修复能力,迁移过程中出现错误一般需要重新迁移,迁移难度较高。

  • 数据准确性难保障,此类工具因不提供对应的质量检测能力,所以迁移的数据质量一般难以保障。

  • 大数据量迁移挑战,因其容灾能力不足,不能很好支撑大数据量、大表的迁移。

02  NineData数据迁移方案

为解决用户面临的MongoDB迁移问题,玖章算术旗下的云原生智能数据管理平台NineData 推出了MongoDB 业务不停服数据迁移能力。NineData实现了完全自动化的全量数据迁移,以及增量数据的采集复制能力。其中,增量数据迁移能力,能够在结构迁移及全量数据迁移期间,实时监听采集源MongoDB数据变更产生的oplog,并在完成全量迁移后,将变更数据实时复制到目标MongoDB,实现源/目标MongoDB的动态复制。基于变更数据迁移能力,在MongoDB数据迁移过程中,业务可以正常提供服务,无需停服。最终,业务可根据需要选择对应时间点切换到目标MongoDB,具体流程如下图。

除了提供业务不停服的迁移能力外,NineData提供的MongoDB还具有如下能力:

▶︎  大数据量或大表的迁移能力

基于智能分片、动态攒批、并发迁移、表级断点续传等多种技术能力,提供强劲迁移能力。

▶︎  数据一致性对比

NineData提供了MongoDB的数据对比能力,能够进行高效的一致性对比,快速识别差异数据,并提供对应的订正脚本,快速订正修复差异内容,有效保障迁移数据质量。

▶︎  可观测可干预能力

NineData提供详细的迁移状态、进展及详情信息,当出现迁移异常时,会提供多种诊断修复能力,帮助您保障任务稳定性。同时,提供迁移限流能力,您可根据业务需要,自定义迁移速度,保障MongoDB的稳定性。

03  一分钟启动全自动化迁移

虽然提供了比较强大的MongoDB迁移能力,但是NineData使用起来非常简单,只需要花1分钟时间完成任务配置,即可以完全自动化完成数据的迁移及同步过程。下面我们来看下整个任务的配置过程:

3.1 配置复制任务

MongoDB迁移及同步方案:NineData配置复制任务

基于上述操作,完成复制数据源、复制对象及复制类型的选择后,即可快速启动MongoDB的全自动化迁移。当完成任务启动后,NineData会自动进行全量数据迁移及增量数据复制。

当数据迁移完成后,也可以配置对应的数据对比进行数据一致性的校验,快速发现、定位并修复差异数据。下面会对刚才迁移的mongodb数据进行数据一致性校验。

3.2 全量数据对比

MongoDB迁移及同步方案:NineData全量数据对比

如视频所示,针对刚才迁移的MongoDB数据可以通过配置运行数据对比任务,进行精准、完整的数据对比。数据对比过程中,NineData会对每个Document的内容进行精准对比,并快速发现差异内容,并针对性提供订正脚本。

至此,当数据迁移完成、数据校验及业务验证通过后,业务可以选择一个低峰期进行MongoDB的停机切换,切换到新的数据库,至此完成整个迁移过程。

04  写在最后

当然,除了MongoDB迁移外,NineData支持MongoDB实例间的长期复制,可应用于数据容灾、读写分离、测试数据构建等业务场景。同时,NineData也已支持数十种常见数据库的迁移复制。NineData提供即开即用的SAAS模式,及企业专属集群模式,满足企业最高的数据安全合规要求。当前,NineData已在运营商、金融、制造业、地产、电商等多个行业完成大规模应用实践。

数据迁移-迁移工具-数据传输-NineData-玖章算术

更多推荐

怒刷LeetCode的第4天(Java版)

#【中秋征文】程序人生,中秋共享#目录第一题题目来源题目内容解决方法方法一:遍历字符串方法二:有限状态机(FiniteStateMachine)方法三:正则表达式第二题题目来源题目内容解决方法方法一:反转数字比较第三题题目来源题目内容解决方法方法一:动态规划方法二:递归回溯第一题题目来源8.字符串转换整数(atoi)-

云计算的未来:云原生架构和自动化运维的崭露头角

文章目录云原生架构:重新定义应用开发和部署什么是云原生架构?为什么云原生架构重要?1.弹性和伸缩性2.故障隔离3.更快的交付4.资源利用率5.多云支持云原生架构的实践步骤1:容器化步骤2:微服务步骤3:自动化运维自动化运维:云计算的关键驱动力什么是自动化运维?为什么自动化运维重要?1.复杂性管理2.资源利用率3.错误率

【汇编】微处理器

【汇编】微处理器文章目录【汇编】微处理器1、微处理器概念1.1关键词1.2分类2、微处理器结构2.1寄存器2.2寄存器&汇编助记符2.3寄存器组成结构3、地址空间3.1存储空间3.1.1虚拟空间(编程空间)3.1.2线性空间3.2I/O空间4、工作模式4.1实地址模式4.2保护虚拟地址模式4.3虚拟86模式1、微处理器

中秋特辑:Java事件监听实现一个猜灯谜小游戏

众所周知,JavaSwing是Java中关于窗口开发的一个工具包,可以开发一些窗口程序,然后由于工具包的一些限制,导致Java在窗口开发商并没有太多优势(当然也有一些第三方的工具包也很好用),不过,在JavaSwing中关于事件的监听机制是我们需要重点掌握的内容。何为事件监听在Java中,事件监听(EventListe

Spring之微服务架构与Spring Cloud

微服务架构与SpringCloud微服务架构与SpringCloud摘要引言词汇解释详细介绍微服务架构SpringCloud核心组件示例代码:注释:注意事项理解微服务架构的优势详细介绍什么是微服务架构?微服务架构的优势1.可扩展性(Scalability)2.灵活性和快速开发(FlexibilityandRapidDe

Spring高手之路11——BeanDefinition解密:构建和管理Spring Beans的基石

文章目录1.探索BeanDefinition1.1官方文档对BeanDefinition的解读1.2BeanDefinition关键方法剖析1.3BeanDefinition部分方法的实际运用1.4BeanDefinition深层信息结构梳理2.BeanDefinition构造体系解析2.1BeanDefinition

Java开发 - 探寻Spring的秘密

前言Spring是企业级J2EE一站式解决方案,提供了整个项目的表现层、业务层、持久层,而且,它的生态特别完善,可以和其他框架无缝对接,现在做Java的哪个项目里没有Spring的说出不去都不信。但往往我们开发者只重视项目是不是run起来了,而忽略了去了解Spring本身,所以很多开发者仅仅是停留在了使用的层次。博主也

JDK8新特性

Lembda表达式lembda表达式是一个简洁、可传递的匿名函数,实现了把代码块赋值给一个变量的功能是我认为jdk1.8中最让人眼前一亮的特性(我没用过其他函数式的语言)在了解表达式之前,我们先看两个概念函数式接口含有且仅含有一个抽象方法,Lembda表达式需要借助函数式接口实现。通常来说我们在这个接口定义上加上@Fu

Spring复杂对象的3中创建方法

复杂对象是相对于简单对象可以直接new出的对象。这种对象在Spring中不可以通过简单对象的创建方式来创建。下面我们将通过实现FactoryBean接口、实例工厂、静态工厂三种方法来创建。FactoryBean接口Spring提供FactoryBean接口并且提供了getObject方法是为了支持自定义工厂。通过实现这

【基础篇】二、parent继承、starter、引导类、内嵌tomcat

文章目录0、前言1、继承parent2、starter3、引导类4、内嵌tomcat5、SpringBoot项目快速启动0、前言SpringBoot,Boot,鞋子,其设计目的是用来简化Spring框架应用的初始搭建以及开发过程Spring程序缺点:依赖设置繁琐(各个依赖之间版本的适配、依赖排除等活儿得自己调)配置繁琐

Hive的分区和分桶

目录​编辑一、Hive分区1.1分区产生的背景1.2动态分区1.2.1hive的动态分区介绍1.2.2动态分区配置1.2.2.1动态分区开启1.2.2.2动态分区模式1.2.2.3一个mr节点上,设置动态分区的最大数量1.2.2.4所有mr节点上,设置所有动态分区的最大数量1.2.2.5设置所有mrjob允许创建的文件

热文推荐