一 实验环境

二 实验步骤

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

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

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

    一 实验环境 这里演示只同步源端ccc库下的t1,t2表,ddd库下的所有表到两个目标端. 二 实验步骤 2.1 创建专用账号 2.1.1 在源端创建账号 2.1.1.1 登录其中一个mongos节点 ...

  2. 用php实现一个简易的web表单生成器,网络编程PHP Web表单生成器案例分析

    本文实例讲述了PHP Web表单生成器.分享给大家供大家参考,具体如下: 1.实例: 2. 需求分析 在项目的实际开发中,经常需要设计各种各样表单.直接编写HTML表单虽然简单,但修改.维护相对麻烦. ...

  3. asp判断ajax请求 -asp.net,一个asp注册验证用户名是否重复的Ajax实例

    一个asp注册验证用户名是否重复的Ajax实例 1.需要用到的初始化xmlhttp实例和发送请求的javascript函数: 以下为引用的内容: // JavaScript Document func ...

  4. Vue学习笔记(2) 在html文件中创建Vue实例,并使用http-vue-loader注册单文件组件

    本篇博客基于Vue2.x 官方文档:https://cn.vuejs.org/v2/guide/instance.html 最近和同学合作一个设备信息管理的小项目,而同学找的模板不是前后端分离的 因此 ...

  5. sql删除过程的命令是什么_一个删除表字段的自动化执行工单的思考

    工作中经常被吐槽:"不就执行一个删除字段的SQL的自动化工单吗?搞起来有这么复杂?" 那就来梳理梳理这样的一个工单的执行需要什么的流程: 简要流程步骤: 1.   申请权限管控 2 ...

  6. 用javascript写一个简单的登录表单,包含用户名、密码和手机号码。提交数据时验证用户名、密码和手机号输入格式。

    题目:写一个用于登录的表单,包含用户名.密码和手机号码.提交数据的时候,要求验证: 1. 用户名必须输入汉字: 2. 密码总共6位,前2位为字母,后4位为数字: 3. 手机号码符合中国大陆手机号码格式 ...

  7. 【问题描述】在带头结点单链表中查找最大值,将其值与最后一个元素交换,输出交换后的单链表各元素。【输入形式】循环输入若干个整数,以字母结束输入,建立带头结点的单链表。【输出形式】输出最

    [问题描述] 在带头结点单链表中查找最大值,将其值与最后一个元素交换,输出交换后的单链表各元素. [输入形式] 循环输入若干个整数,以字母结束输入,建立带头结点的单链表. [输出形式] 输出最大值与最 ...

  8. FS4052A是一个4.0-23V宽电压输入,2A充电电流单电池 同步降压锂离子电池充电器

    FS4052A是一个4.0-23V宽电压输入,2A充电电流单电池 同步降压锂离子电池充电器,适用于 便携式应用程序.选择插针方便 不同的电池电压.集成800 kHz同步 降压调节器由23V额定FET组 ...

  9. html如何制作一个漂亮的表格?+ 列表制作 + 表单制作(干货!直接收代码)

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 html如何 ...

最新文章

  1. ImageNet时代将终结?何恺明新作:Rethinking ImageNet Pre-training
  2. Java基类共同属性设置_java – 你有一个Hibernate实体的基类吗?
  3. 移动热潮催火统一通信
  4. 【已解决】R语言,如何切换镜像?
  5. React开发(200):三种截取字符串的方法
  6. media recovery oracle,Oracle非归档模式Media Recovery错误之--ORA-26040
  7. 1分钟看懂:java 项目中 VO 、DTO、Entity,各自是在什么情况下应用的
  8. Intel超线程技术 Hyper-Threading Technology (4) - 处理器资源与超线程(分区的资源/竞争共享的资源)
  9. Spring中IoC两种接口和两种依赖注入方式的比较
  10. sql 查询数据库索引重建_SQL查询性能的杀手– –了解不良的数据库索引
  11. 一个简单的samba案例(测试与思考)
  12. Kerberos安装及拖管Ambari 2.7
  13. php写入mysql表格失败,麻烦给我看一下为什么MySQL创建表格失败嘛
  14. 个人ID的搜索引擎结果分析与联想
  15. Java中文分词组件 - word分词
  16. 关于虚拟主机那点事儿
  17. linux-网络安全防火墙
  18. 备份与同步(二) 如何使用云存储来实现多设备的备份与同步
  19. H5移动应用的发布优化(四)图片优化
  20. qq屏蔽怎么知道对方信息(qq屏蔽怎么让对方知道)

热门文章

  1. mysql扣减库存_扣库存之mysql方案讨论
  2. jQuery-Ajax的使用
  3. 面向对象设计原则之接口隔离原则
  4. 【python自动化】基于Splinter的自动化回归/测试脚本
  5. BERT模型—1.BERT模型架构
  6. Java核心技术 卷1 基础知识 学习笔记——第三章 java的基本程序设计结构
  7. [21S01][1136] Column count doesn‘t match value count at row 1 报错分析
  8. 电路图:LM3886低音炮电路
  9. 不能打开到主机的连接,在端口1521:连接失败的解决方法(修改远程桌面连接端口)
  10. 大文件分块计算MD5值 C++实现