当前位置: 首页 > 工具软件 > MongoShake > 使用案例 >

使用MongoShake实现MongoDB数据迁移(同步)

南门鸿哲
2023-12-01

mongoShake是阿里云自研开源工具,该功能可用于数据分析、灾备和多活等业务场景。

MongoShake介绍

MongoShake是阿里云以Golang语言编写的通用平台型服务工具,它通过读取MongoDB的Oplog操作日志来复制MongoDB的数据以实现特定需求。

MongoShake还提供了日志数据的订阅和消费功能,可通过SDK、Kafka、MetaQ等方式的灵活对接,适用于日志订阅、数据中心同步、Cache异步淘汰等场景。

如需了解更多MongoShake相关信息,请参见:https://github.com/alibaba/MongoShake?spm=a2c4g.11186623.0.0.5f002c26LcPvCh

适用的数据源:

        1、ECS上的自建MongoDB数据库;

        2、本地自建的MongoDB数据库;

        3、阿里云MongoDB实例;

        4、第三方云MongoDB数据库;

使用

        准备工作

        以获取最低的网络延迟,当前mongo实例所在服务器最好与将迁移的服务器内网能互通;

        操作步骤

        1、在迁移服务器上下载mongoShake程序并重命名为mongoshake.tar.gz

        wget "http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/196977/jp_ja/1608863913991/mongo-shake-v2.4.16.tar.gz" -O mongoshake.tar.gz

         2、执行如下命令在将MongoShake解压到/root/mongoshake目录中,个人可以按安装位置自行选择。

tar zxvf mongoshake.tar.gz && mv mongo-shake-v2.4.16 /root/mongoshake && cd /root/mongoshake

         3、进到mongoshake目录下,执行vi collector.conf命令,修改MongoShake的配置文件collector.conf,主要参数有:

参数说明示例值
mongo_urls源端MongoDB实例的ConnectionStringURI格式连接地址。说明
  • 建议通过专有网络地址进行互连,以获取最低的网络延迟。
  • 关于ConnectionStringURI格式详情请参见副本集实例连接说明
mongo_urls = mongodb://root:Ftxxxxxx@dds-bpxxxxxxxx.mongodb.rds.aliyuncs.com:3717,dds-bpxxxxxxxx.mongodb.rds.aliyuncs.com:3717

说明 密码中不得包含艾特(@)字符,否则会导致连接失败。

tunnel.address目标端MongoDB实例的ConnectionStringURI格式连接地址。说明
  • 建议通过专有网络地址进行互连,以获取最低的网络延迟。
  • 关于ConnectionStringURI格式详情请参见副本集实例连接说明
tunnel.address = mongodb://root:Ftxxxxxx@dds-bpxxxxxxxx.mongodb.rds.aliyuncs.com:3717,dds-bpxxxxxxxx.mongodb.rds.aliyuncs.com:3717

说明 密码中不得包含艾特(@)字符,否则会导致连接失败。

sync_mode数据同步的方式,取值:
  • all:执行全量数据同步和增量数据同步。
  • full:仅执行全量数据同步。
  • incr:仅执行增量数据同步。

说明 默认值为incr。

sync_mode = all

        4、执行命令启动同步任务,并打印日志信息 

        ./collector.linux -conf=collector.conf -verbose

        5、观察打印的日志信息,当出现如下日志时,即代表全量数据同步已完成,并进入增量数据同步模式

        [09:38:57 CST 2019/06/20] [INFO] (mongoshake/collector.(*ReplicationCoordinator).Run:80) finish full sync, start incr sync with timestamp: fullBeginTs[1560994443], fullFinishTs[1560994737] 

        6、注意一点,在开启同步命令执行后,命令无法后台运行,使用Ctrl+c会杀死同步进程;

        开启同步后,在主库会生成mongoShake数据库,报错同步optlog同步位置标识;删除后同步会重新全量同步

 类似资料: