使用mongo shake实现单实例mongo之间的数据同步

Posted 雅冰石

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mongo shake实现单实例mongo之间的数据同步相关的知识,希望对你有一定的参考价值。

一 实验环境

二 实验步骤

2.1 确保源端mongo已开启oplog

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

2.2 安装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 修改配置文件

vi collector.conf

#源端mongo地址

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

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

#目标端mongo地址

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

sync_mode = all

/*

详细的配置参数介绍,请参考:

配置参数说明 · alibaba/MongoShake Wiki · GitHub

*/

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

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

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

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的集群复制工具,可以满足迁移和同步的需求,进一步实现灾备和多活功能。

以上是关于使用mongo shake实现单实例mongo之间的数据同步的主要内容,如果未能解决你的问题,请参考以下文章

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

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

用mongoshake实现mongo分片集群到单实例和分片集群的数据同步

用mongoshake实现mongo分片集群到单实例和分片集群的数据同步

用mongoshake实现mongo分片集群到单实例和分片集群的数据同步

使用ycsb对mongo单实例做性能测试