乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
Mongodb 2.1 oplog
2017-09-11 13:17:05
29
0
0
admin
> 类似于MySQL的binlog, secondary 从primary 获取oplog 来同步数据。 #查看oplog ``` rs0:PRIMARY> use local switched to db local rs0:PRIMARY> db.oplog.rs.find().limit(3) { "ts" : Timestamp(1505135235, 1), "h" : NumberLong("7976947568045296322"), "v" : 2, "op" : "n", "ns" : "", "o" : { "msg" : "initiating set" } } { "ts" : Timestamp(1505135236, 1), "t" : NumberLong(1), "h" : NumberLong("2810461450208648340"), "v" : 2, "op" : "n", "ns" : "", "o" : { "msg" : "new primary" } } { "ts" : Timestamp(1505135246, 1), "t" : NumberLong(1), "h" : NumberLong("-7304009683028643864"), "v" : 2, "op" : "n", "ns" : "", "o" : { "msg" : "periodic noop" } } //从后往前查看oplog rs0:PRIMARY> db.oplog.rs.find().sort({$natural : -1}).limit(3) ``` ts => (时间戳,这个时间戳第几个操作) h => 这个操作的unique ID v => oplog 的版本 ns => 命名空间 op => i=插入,u=更新,d=删除,c=数据库命令,n=没有操作,会定期执行 fromMigrate => true 代表是从别的分片迁移过来的 *** #oplog size *图片来自官网*  ##修改oplog **不能在primary上执行,可以用rs.stepDown() 来强制primary 变为secondary** 1.关闭数据库,然后用非replic 的模式启动,端口改成别的,使之不会受到其它实例影响 ``` kill xxx mongod --port 37017 --dbpath /srv/mongodb ``` 2.备份几行oplog ``` use local db.oplogbk.drop() // 保证这个表不存在 db.temp.save(db.oplog.rs.find().sort({$natural : -1}).limit(1).next()) ``` 3.drop旧oplog,创建新oplog ``` db.oplog.rs.drop() //改成10 GB db.runCommand({create:"oplog.rs",capped:true,size:(10*1024*1024*1024)} ) db.oplog.rs.save( db.temp.findOne() ) ``` 4.重启mongod,端口,replic 配置回去。 5.在其它机器上再来一遍。
上一篇:
Mongodb 2.0 Replic
下一篇:
Mongodb 2.2 Replic 管理
文档导航