《Linux运维总结:使用MongoShake实现MongoDB副本集间的单向同步》

一、MongoShake工具介绍

MongoShake是一个基于MongoDB的oplog的通用服务平台。它从源mongo数据库中获取oplog,并在目标mongo数据库中重放或发送到不同隧道的其他端。如果目标端是mongo数据库,即直接replay oplog,它就像一个同步工具,用于将数据从源MongoDB复制到另一个MongoDB,以建立冗余复制或双活复制。除了这种直接方式,还有其他隧道类型,如rpc、file、tcp、kafka。用户编写的接收器必须定义自己的接口以分别连接到这些隧道。用户还可以定义自己的可插入隧道类型。如果连接kafka等第三方消息中间件,消费者可以在pub/sub模块中灵活的异步获取订阅者数据。

在这里插入图片描述
源可以是单个mongod、副本集或分片,而目标可以是mongod或mongos。如果源是副本集,我们建议从secondary/hidden取数据来缓解primary的压力。如果源是分片,每个分片都应该连接到 Mongo-Shake。目标端可以有多个mongos来保持高可用,不同的数据会被hash后写入不同的mongos。

说明: 如需了解更多MongoShake相关信息,请参见MongoDB-shake Github主页。


二、环境信息说明

类型操作系统软件版本集群类型实例
Centos7.6Mongodb4.4.8副本集192.168.1.1.191:27017
Centos7.6Mongodb4.4.8副本集192.168.1.1.191:27018
Centos7.6Mongodb4.4.8副本集192.168.1.1.191:27019
目标Centos7.6Mongodb4.4.8副本集192.168.1.1.192:27017
目标Centos7.6Mongodb4.4.8副本集192.168.1.1.192:27018
目标Centos7.6Mongodb4.4.8副本集192.168.1.1.192:27019

三、MongoDB副本集间的单向同步

3.1、创建同步数据用户

同步的数据源所需权限
源MongoDB实例readAnyDatabase权限、local库的read权限和mongoshake库的readWrite权限
目标MongoDB实例readWriteAnyDatabase权限或目标库的readWrite权限。

说明 mongoshake库会在增量同步开始时由MongoShake程序自动在源实例中创建。

1、源副本集主节点

use admin;
db.createUser({user:'shake',pwd:'shake',roles:[{role:'readWrite',db:'mongoshake'}]})
db.grantRolesToUser("shake",[{role:'readAnyDatabase',db:'admin'}])
db.grantRolesToUser("shake",[{role:'read',db:'local'}])
db.grantRolesToUser("shake",[{role:'read',db:'config'}])

如下图所示:
在这里插入图片描述

2、目标副本集主节点

use admin;
db.createUser({user:'shake',pwd:'shake',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})

如下图所示:
在这里插入图片描述


3.2、安装配置MongoShake

#1、下载MongoShake
[root@localhost pkgs]# wget https://github.com/alibaba/MongoShake/releases/download/release-v2.8.1-20220922/mongo-shake-v2.8.1.tgz
[root@localhost pkgs]# tar axf mongo-shake-v2.8.1

#2、编辑collector.conf配置文件
[root@localhost pkgs]# cd mongo-shake-v2.8.1
[root@localhost mongo-shake-v2.8.1]# vim collector.conf
sync_mode = all
mongo_urls = mongodb://shake:shake@192.168.1.191:27107,192.168.1.191:27018
tunnel.address = mongodb://shake:shake@192.168.1.192:27107,192.168.1.192:27018

3.3、启动MongoShake服务

[root@localhost mongo-shake-v2.8.1]# ./start.sh collector.conf

3.3、监控MongoShake状态

在这里插入图片描述


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:《Linux运维篇:Linux系统运维指南》

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城绝神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值