文章插图
转载本文需注明出处:微信公众号EAWorld,违者必究 。
?前言:
随着传统企业的发展,企业数据呈现多样化,海量化,难以实现数据快速分析 。MongoDB是当前很多企业使用的,当日积月累数据很大时,就可能会忽略历史数据的价值,可以把数据实时同步到其他储存:HBASE、HIVE、HDFS文件等等 。在当前大数据、云计算的时代潮流下,实现数据价值,对企业决策力、洞察发现力极其有益 。
在MongoDB 3.6 之后版本,提供Change Streams API 。但目前数据量庞大的仍还是3.6之前版本的历史悠久企业 。这些资产数据是不可缺少的,所以当使用3.6之前版本,两步走:首先对历史库数据迁移 。再开始监听MongoDB库增量变化,实现MongoDB的监听和实时同步(Oplog) 。
目录:
1.Oplog简介
2.MongoDB服务配置启动
3.Oplog获取和查看
4.简单JAVA代码实现
1.Oplog简介1、认识
当在MongoDB的Primary下,我们进行操作库表时,这些操作会以特殊格式储存在local库下的一个固定集合中(下面会介绍到) 。Secondary(次)就会通过获取主的oplog,来进行同步数据,并且存储自己的Oplog 。所以Oplog 也是Mongodb Replication的重要组成了 。
2、大小
Mongodb默认将其大小分配的是5%的空闲磁盘空间 。也可以在创建 mongod 服务时,在mongo.conf中oplogSize自定义参数设置,单位是mb,如果不指定,不同操作系统上的 oplog 默认大小不同,具体为以下:
For 64-bit linux, Solaris, and FreeBSD systems:可以分配 5% 的剩余空间 。如果分配的值仍小于 1GB,那么会分配 1GB 。
For 64-bit OS X systems:分配 183MB 。
For 32-bit systems:分配 48MB 。
oplog的内存占比速度与系统处理写请求的速度相当,所以很快就会增量更新数据 。时间上完全可以支持实时同步 。
3、oplog库表
oplog会自动创建在local库的collection:
a、master/slave 架构下:local.oplog.$main
文章插图
b、replica sets 架构下:local.oplog.rs
文章插图
c、sharding 架构下,mongos下不能查看oplog,可到每一片去
2.MongoDB服务配置启动1.解压当前目录
tar zxvf mongodb-linux-x86_64-3.2.22.tgz -C ./ mongodb-3.2.22
2.创建data、logs/mongodb.log文件夹
文章插图
3. bin下创建mongodb.conf自定义配置
文章插图
4. 创建启动脚本
start-mongodb.sh,赋权chmod +x start-mongodb.sh
文章插图
5. 启动 ./start-mongodb.sh
6.测试
./mongo,默认进入的collections是test,PRIMARY节点
文章插图
文章插图
3.oplog获取和查看1. oplog数据结构
分析oplog中字段的含义
- ts: 8字节的时间戳,由4字节unix timestamp + 4字节自增计数表示 。这个值很重要,在选举(如master宕机时)新primary时,会选择ts最大的那个secondary作为新primary
- op:1字节的操作类型
- "i":insert
- "u":update
- "d":delete
- "c":db cmd
- "db":声明当前数据库 (其中ns 被设置成为=>数据库名称+ '.')
- "n": no op,即空操作,其会定期执行以确保时效性
- ns:操作所在的namespace
- o:操作所对应的document,即当前操作的内容(比如更新操作时要更新的的字段和值)
- o2: 在执行更新操作时的where条件,仅限于update时才有该属性
通过"db.printReplicationInfo()"命令可以查看oplog的信息
文章插图
字段说明:
- configured oplog size:oplog文件大小
- log length start to end: oplog日志的启用时间段
- oplog first event time: 第一个事务日志的产生时间
- oplog last event time: 最后一个事务日志的产生时间
- now: 现在的时间
- Nacos数据持久化到MySQL
- MySQL进阶之MySQL数据库整体架构设计
- 黑客入侵MongoDB数据库 被入侵数据占总数据库47%
- 如何在mysql 造1亿条记录的大容量数据表?
- 淘宝分析数据用什么工具 怎么学会分析淘宝店铺数据
- Dataphin-数据中台利器
- Facebook正在泄露信息 Facebook将数据秘密共享给其他16个app
- 数据存储层HBase进阶之写流程
- 数据持久化框架为什么放弃Hibernate、Mybatis选择JDBCTemplate
- 生意参谋竞店怎么删除 怎么看竞店的销售数据