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

一 实验环境

使用mongo shake实现单实例mongo之间的数据同步_第1张图片

二 实验步骤

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

filter.ddl_enable = true

/*

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

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

*/

2.3 启动mongoshake

sh start.sh collector.conf

#检查是否能看到collector进程

ps -ef |grep collector | grep -v 'grep'

root     27759     1  0 18:52 ?        00:00:00 ./hypervisor --daemon --exec=./collector.linux -conf=collector.conf 1>> collector.linux.output 2>&1

root     27760 27759  0 18:52 ?        00:00:04 ./collector.linux -conf=collector.conf 1>> collector.linux.output 2>&1

/*

对应的停止命令是sh stop.sh mongoshake.pid。

日志文件路径:mongoshake/logs

有时启动mongoshake没起来,日志里也没报错,可用如下方式启动,能在启动页面就能看到有日志输出:

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

*/

会发现源端自动创建了一个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的集群复制工具,可以满足迁移和同步的需求,进一步实现灾备和多活功能。

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