使用mongo shake实现从一个单实例mongo往多个mongo单实例进行数据同步
Posted 雅冰石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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
--本篇文章主要参考了:
使用MongoShake实现MongoDB副本集间的单向同步 - 云数据库 MongoDB - 阿里云
https://github.com/alibaba/MongoShake/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98&FAQ
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系以上是关于使用mongo shake实现从一个单实例mongo往多个mongo单实例进行数据同步的主要内容,如果未能解决你的问题,请参考以下文章
使用mongo shake实现单实例mongo之间的数据同步
使用mongo shake实现单实例mongo之间的数据同步
用mongoshake实现mongo分片集群到单实例和分片集群的数据同步
用mongoshake实现mongo分片集群到单实例和分片集群的数据同步