使用mongo shake实现从一个单实例mongo往多个mongo单实例进行数据同步

一 实验环境

 二 实验步骤

2.1 确保源端mongo已开启oplog

可参考单实例MongoDB 如何开启Oplog_雅冰石的专栏-CSDN博客

2.2 安装mongoshake

在每个目标端都安装mongoshake。

2.2.1 下载安装

Mongo shake下载地址:

Releases · alibaba/MongoShake · GitHub

cd /opt

tar -xvf mongo-shake-v2.4.16.tar.gz

mv mongo-shake-v2.4.16 mongoshake

cd mongoshake

2.2.2 修改配置文件

#这里以往目标端192.168.144.249同步为例

vi collector.conf

#源端mongo地址

mongo_urls = mongodb://root:密码@192.168.144.248:27017

注意,mongo的密码不能包含@等特殊字符。

#目标端mongo地址

tunnel.address = mongodb://root:密码@192.168.144.249:27017

sync_mode = all

checkpoint.storage.collection = ckpt_default_249

注意:

checkpoint.storage.collection的默认值是ckpt_default,如果多个mongoshake配置的是同一个源端,则需要确保checkpoint.storage.collection的值是不同的,比如192.168.144.250的checkpoint.storage.collection值可以设置为ckpt_default_250

2.3 启动mongoshake

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

[2021/12/24 22:24:39 CST] [WARN]

______________________________

\                             \           _         ______ |

 \                             \        /   \___-=O'/|O'/__|

  \  MongoShake, Here we go !!  \_______\          / | /    )

  /                             /        '/-==__ _/__|/__=-|  -GM

 /        Alibaba Cloud        /         *             \ | |

/                             /                        (o)

------------------------------

……

会发现源端自动创建了一个mongoshake库:

single:PRIMARY> use mongoshake;

switched to db mongoshake

#有一个检查点的表

single:PRIMARY> show tables;

ckpt_default

2.4 测试数据同步

#在源端插入数据

single:PRIMARY> use bb;

switched to db bb

single:PRIMARY> db.a.insert({"id":1})

WriteResult({ "nInserted" : 1 })

#在目标端验证下数据能否同步过来

> use bb;

switched to db bb

> db.a.find();

{ "_id" : ObjectId("61c5e78406138fe33e2b88d5"), "id" : 1 }

发现数据过来了。

三 备注

假如只想同步mongo的部分表,可以这样实现:

修改配置文件,设置以下参数,不同对象之间用分号分隔:

示例:

同步aa.t1,bb.t1这俩表:

filter.namespace.white =aa.t1;bb.t1

--本篇文章主要参考了:

GitHub - alibaba/MongoShake: MongoShake is a universal data replication platform based on MongoDB's oplog. Redundant replication and active-active replication are two most important functions. 基于mongodb oplog的集群复制工具,可以满足迁移和同步的需求,进一步实现灾备和多活功能。

使用MongoShake实现MongoDB副本集间的单向同步 - 云数据库 MongoDB - 阿里云

https://github.com/alibaba/MongoShake/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98&FAQ

https://github.com/alibaba/MongoShake/wiki/FAQ#q-how-to-sync-data-from-one-mongodb-to-several-target-mongodb

你可能感兴趣的:(4,Mongodb,学习,#,mongoshake,mongodb,数据库,mongo数据同步)