mongodb:修改oplog.rs 的大小size

其内容字段说明:
- ts:操作日志的timestamp
- t: 未知?
- h:操作唯一随机值
- v:oplog.rs的版本
- op:操作类型:
- i:insert操作
- u:update操作
- d:delete操作
- c:command操作
- n:null操作
- ns:名字空间:由 【db.collection】组成
- o:操作日志文档内容
- o2:操作查询条件,仅update有
----------------------------------------------------------------------------------------------------
那如何修改oplog.rs的大小呢?
(个人猜测)mongodb在replication模式下,启动是会检测local下的几个相关collection,其中的oplog.rs就是本地的操作日志集合。
如果该集合存在,mongodb就不会考虑你的配置或命令选项中关于其大小的参数设置【replication.oplogSizeMB:n】的设置;否则,在第一次初始化replset时,根据该参数创建相关collection;而在其他人为配置有问题的情况下,报错启动失败!
mongodb官方给出了不同版本下修改oplog.rs的方法,原则是:
- 滚动处理,先secondary,再到primary
- 处理primary时,先降级stepdown为secondary,让系统自行选出新的primary后,再处理
本文,给出一个可能最便捷但可能不靠谱的方式,修改oplog.rs大小。其中的关键点:
- 新的oplog.rs的大小必须在990m~50G之间,默认系统选择free-disk-space的5%作为默认值
- 新的oplog.rs自然是capped的
- 新的oplog.rs内必须添加一个文档记录: {ts: Timestamp(155555555,1), h: NumberLong("-35456346546456")}
关键之处就在此,【ts、h】字段是必须的,其值只有合乎语法规范即可,当然为了保证replset运行逻辑的正确性,就必须仔细考虑了。
- 如果是secondary的话,应该是随便设置都可以的,只要比 replset.minvalid 小都可以
- 如果是primary的话(比如单节点replset),随便设置,因为根本不会启动同步源
- 如果是primary的话,后面跟着很多的secondary,理论上,必须还原修改大小之前的oplog.rs的内容,否则后果难以预料!这也是官方再三强调先降级为secondary角色再处理的原因!
操作命令:
use admin
rs.initiate({_id:"rset",members:[{_id:0,host:"127.0.0.1:27017"}]});
rs.initiate
(
{
"_id":"rset", #必须的,replset的名字
"members":[ #必须的
{
"_id":0, #必须的
"host":"127.0.0.1:27017" #必须的
}
]
}
); use local
db.temp.drop()
db.temp.save( db.oplog.rs.find( { }, { ts: 1, h: 1 } ).sort( {$natural : -1} ).limit(1).next() )
db.temp.find() use local ---- standalone
db.oplog.rs.renameCollection("oplog.rs.2")
db.createCollection("oplog.rs",{size:(3*1024*1024*1024),capped:1})
db.oplog.rs.insert({ts:Timestamp(1142268227, 1),h:NumberLong("-8215191208524156281")}) use test
for (i=1; i<=29999;i++) { db.tab.insert({c1:i});}
db.tab.count()
mongodb:修改oplog.rs 的大小size的更多相关文章
- MongoDB 修改数据Cannot change the size of a document in a capped collection: * != *"
MongoDB修改数据库数据的时候报错 原因: 集合被设置成了 固定集合 .固定集合的数据不能被修改.只能查找-删除-再插入,也就是创建集合的时候设置了capped参数为true 解决: 创建集合的时 ...
- rolling方式修改oplog
在 3.4之前版本 , 修改oplog 是一个非常麻烦的事情, 要停数据库 , rolling方式适合 3.4 之前版本修改oplog的大小 1. 配置文件注释 replSet2. 配置文件 oplo ...
- Android Studio 3.1.2 修改字体(font)大小(size) 及老版本修改主题、字体、颜色 参照地址
Android Studio 3.1.2 修改字体(font)大小(size) 步骤:File-Settings-Editor-Color Scheme-Color Scheme Font-Size ...
- mongodb之 oplog 日志详解
1:oplog简介 oplog是local库下的一个固定集合,Secondary就是通过查看Primary 的oplog这个集合来进行复制的.每个节点都有oplog,记录这从主节点复制过来的信息,这样 ...
- mongodb的oplog遇到的问题
mongodb调整oplog的大小的方法 关闭当前服务器,将服务器以单机模式启动.这是一种方法,还有没有其他方法? mongodb实时扫描oplog,判断记录到哪个地方了 如果扫描oplog的程序挂掉 ...
- mongodb 修改oplogSize
oplog是local库下的一个固定集合,Secondary就是通过查看Primary的oplog这个集合来进行复制的.每个节点都有oplog,记录从主节点复制过来的信息,这样每个成员都可以作为同步源 ...
- mongodb修改器
mongodb修改器 转载自:http://blog.csdn.net/mcpang/article/details/7752736 mongodb修改器(\(inc/\)set/\(unset/\) ...
- 转:mongoDB 修改 ulimit
转自:http://blog.yucanlin.cn/2015/03/23/mongodb-%E4%BF%AE%E6%94%B9-ulimit/ mongoDB 修改 ulimit 一切都源于mong ...
- 修改/dev/shm的大小
修改/dev/shm的大小 修改/etc/fstab的这行: 默认的:tmpfs /dev/shm tmpfs defaults 0 0改成:tmpfs /dev/shm tmpfs defaults ...
随机推荐
- [转]使用DW正则表达式批量替换实例介绍
原文地址:http://www.jb51.net/Dreamweaver/86329.html 网站优化过程中,经常会遇到很多要批量修改的东西,一个个修改,明显效率低下.本文是使用DW正则表达式批量替 ...
- andorid——自定义seekbar(转)
xml 新建=>xml=>values <?xml version="1.0" encoding="utf-8"?> <resou ...
- Linux系统上传下载命令rz和sz
Linux系统简单易用的上传下载命令rz和sz (2017年7月10日更新) 发布地址(http://oldboy.blog.51cto.com/2561410/588592) (一)安装方法汇总 1 ...
- SpringBoot2 上传文件 上传多文件
项目结构: 1.单文件上传 upload.html <!DOCTYPE html> <html lang="en"> <head> <me ...
- 22 Best Sites To Download Free Sprites
http://unity3diy.blogspot.com/2014/11/Free-Sprites-Download-For-YourGames.html ————————————————————— ...
- CNDS账号密码
您购买的CSDN 100下载积分 发货如下:CSDN账号:masunwei0961CSDN密码:sangsang3邮箱:lao42981894zh@163.com邮箱密码:songsong3
- 深入浅出 kvm qemu libvirt
在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvmkvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备:qemu是模拟IO设备(网卡,磁盘),kvm加上 ...
- == equals hashCode 总结比较
在Java中: ==是运算符,用于比较两个变量是否相等. equals,是Objec类的方法,用于比较两个对象是否相等,默认Object类的equals方法是比较两个对象的地址,跟==的结果一样.Ob ...
- 【转载】Exchange 2010配置与安装实用手册
Exchange 2010配置与安装实用手册 在Exchange 2010配置的时候主要分三大部分,这分别是网络配置.准备存储以及相关的安装策略和过程.同时还需要注意和其他的Windows软件相协调. ...
- qualcomm qact 使用记录
使用QACT调试音频,首先安装QPST,并安装对应的usb驱动,如果驱动没有安装好,有驱动精灵等软件进行安装. QPST configure中选择对应的设备. 在线调试 打开QACT,选择" ...