首页 > 其他分享 >Mongo-Shake介绍(1)

Mongo-Shake介绍(1)

时间:2023-01-23 14:11:36浏览次数:48  
标签:Mongo MongoDB 数据库 介绍 Shake oplog id

Mongo-Shake由阿里云Nosql团队开发和维护,是一个基于MongoDB的oplog的通用服务平台。从源mongo数据库中获取oplog,并在目标mongo数据库中重放或通过不同的tunnels发送到其他终端。如果目标端是mongo数据库,这意味着直接重放oplog,它就像一个同步工具,用于将数据从源MongoDB复制到另一个MongoDB,以构建冗余复制或active-active复制。

除了这种直接方式,还有其他tunnels类型,如rpc、file、tcp、kafka。用户编写的接收者必须分别定义自己的接口来连接这些tunnels。用户还可以定义自己的可插拔tunnels类型。如果连接到像kafka这样的第三方消息中间件,消费者可以灵活地在pub/sub模块中以异步方式获取订阅者数据。

 

这里是一般的数据流,

源可以是单个mongod,副本集或分片,而目标可以是mongod或mongos。如果源是副本集,我们建议从secondary/hidden中获取数据,以缓解primary的压力。如果源是分片,每个分片都应该连接到Mongo-Shake。在目标端可以有多个mongos以保持高可用性,不同的数据将被散列并写入不同的mongos。

 

并行复制

并行复制有三个选项,我们称之为“shad_key”:id、collection和auto。

·id表示并发粒度为文档;

·collection表示并发粒度为集合/表;

·auto选项由集合是否存在唯一索引决定,如果集合有唯一索引,就会使用collection,否则会更改成id。

 

高可用

Mongo-Shake周期性地将其上下文持久化到注册中心,默认情况下是源数据库。

目前,上下文是checkpoint,它标记了成功重放的oplog的位置。MongoShake还提供了Hypervisor机制用于在服务挂掉的时候,将服务重新拉起(配置中的master_quorum)。

 

过滤

支持黑白名单过滤数据库和集合命名空间。

 

DDL同步

从1.5版本开始,MongoShake通过使用全局barrier支持DDL同步。一旦获取DDL oplog, MongoShake就会添加一个barrier,让后面所有的oplog都在队列中等待,直到这个oplog被写入目标MongoDB或tunnels,并且检查点更新。目前DDL只在源端支持ReplicaSet(目标端可以是RelicaSet或者Sharding),以后的版本我们会支持Sharding。

 

全局ID

阿里云内部版本支持全局id(也叫gid),用来标识数据库的id。当两个数据库成为彼此的备份时,它可以用来避免循环。

Mongo-Shake只获取等于源数据库id的oplogs,当没有gid时,所有的oplogs都将被获取。目前的开源版本,受MongoDB内核修改的限制,暂不支持。

如果你想在不支持gid的情况下构建双活复制,请访问FAQ文档以了解更多详细信息。

 

Compressor

在批量发送oplogs前,支持Gzip, zlib, deflate压缩。

标签:Mongo,MongoDB,数据库,介绍,Shake,oplog,id
From: https://www.cnblogs.com/abclife/p/17055824.html

相关文章

  • @RequestParam中required的介绍
    required=true是在前端没有传参数的时候报错,并不能防止参数为空。required=false表示前端不传参数的时候,会将参数置为null。因此假如参数是int这种不能赋值为null的类......
  • (18)go-micro微服务ELK介绍
    目录一什么是ELK二Beats的六种工具三ELK系统的特点四ELK+beats系统架构五ELK优点六最后一什么是ELKELK是三个[开源软件]的缩写,分别表示:Elasticsearch,Logstash,......
  • 互斥锁简单介绍
    可重入锁意思是object.lock()获取锁后,可以再次使用object.lock()获取锁,如果发生了死锁就不是可重入锁公平锁就是排队买票,不公平锁就是插队买票锁实现的基本原理1.需要一......
  • MongoDB cmd CRUD操作 对照SQL
    问题​​参考官方文档​​使用MogoDB你就要熟悉他的常用cmd命令,增删改查,聚合多表查询等基本操作,本片博客旨在教会大家快速上手MogoDB,对其有基本了解,会对照Oracle的SQL查询......
  • 功能测试必备:抓包工具之谷歌开发者工具介绍及使用场景
    大家好啊,我是大田如果想在Web端抓取网络报文,就打开一个浏览器页面,按快捷键F12,点击NetWork,即可看到。一、四个操作:1、小红点代表抓包标志,点击一下变灰,就停止抓包了......
  • 从共地到浮地的简单介绍
    在模拟电路中,如果需要仿真电路或者分析电路,经常需要找到地在哪里,即GND,之后才能开始进行分析。比如一个同相放大电路,正常画法如下图所示。当输入电压为1V时,输出电压为2V。......
  • 安装mongodb
    环境:系统:OracleLinuxServerrelease8.6(基于:RedHatEnterpriseLinuxrelease8.6(Ootpa))背景:公司开始使用oracle,所以使用了OracleLinux,给我安装mongodb带来的很......
  • 网站建设的基本流程介绍
    网站建设的基本流程介绍网站建设的基本流程介绍1、明确建站需求。拟定网站架构,明确需要的频道、展现信息及功能。这些都要事前做好规划,建议可以参考出色的网站,学习他们的规......
  • JAVA实现MQTT通讯介绍
    JAVA实现MQTT通讯介绍    MQTT(消息队列遥测传输)是ISO标准(ISO/IECPRF20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设......
  • web开发的模式的介绍与身份认证
    web开发的模式的介绍1.服务端渲染2.前端端分离开发的web模式服务端渲染优点与缺点优点:1.前端耗时少。因为服务器端负责动态生成HTML内容,浏览器只需要直接渲染页面即......