Mongo之ChangeStream详解

本文介绍了MongoDB的Change Stream特性,它允许用户实时监听数据库变更,并提供了在副本集和分片集群上的应用。通过示例展示了如何设置监听流,包括变更事件的粒度控制和时间点指定。同时,提到了其在数据同步、审计和与其他系统集成等场景的应用。
摘要由CSDN通过智能技术生成

简介

Change Stream可以直译为"变更流",也就是说会将数据库中的所有变更以流式的方式呈现出来。用户可以很方便地对数据库建立一个监听(订阅)进程,一旦数据库发生变更,使用change stream的客户端都可以收到相应的通知。使用场景可以包括但不限于以下几种:

  • 多个MongoDB集群之间的增量数据同步;

  • 高风险操作的审计(删库删表);

  • 将MongoDB的变更订阅到其他关联系统实现离线分析/计算等等;

特征

change stream的一些特性事项

  • change stream对于副本集分片集群都可用。副本集时,可以在副本集中任意一个成员上建立监听流;分片集群时则只能在mongos上建立监听流。

  • 使用条件:1)WT引擎;2)副本集协议为 pv1 ;3)4.0及以前的版本,要求支持readConcern为 “majority” 。

  • 粒度可调整,可选择配置在单个表、单个库或者整个集群上。但是无法配置为 admin/local/config 库或者 system.xxx 表。

  • 4.0以后的版本可以指定 startAtOperationTime 来表示在某个特定的时间开始监听change Stream。但是要求给定的时间点必须在所选择节点的有效oplog时间范围中。

使用

1. 搭建集群

下面通过搭建一个单节点的副本集mongodb来试验下
修改配置并启动

bind_ip=0.0.0.0
port=27017
replSet=ts
fork=true # 以创建子进程的方式运行
dbpath=/data/mongodb/db #日志输出方式数据库路径
logappend=true #日志输出方式,日志append而不是overwrite
logpath=/data/mongodb/logs/mongo.log #日志路径
auth=false #开启安全验证(可以不开启)

配置集群

> cfg = {"_id" : "ts", "members" : [{"_id" : 0,"host" : "9.135.77.164:27017"}]}
{
        "_id" : "ts",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "9.135.77.164:27017"
                }
        ]
}
> 
> 
> rs.initiate(cfg)
{ "ok" : 1 }

查看状态

ts:PRIMARY> rs.status()
{
        "set" : "ts",
        "date" : ISODate("2023-04-03T03:33:48.813Z"),
        "myState"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值