MongoDB修改oplog size
2014-12-16 03:49
375 查看
> oplog简介:
oplog:operations log的简写,存储在一个特殊的数据库中(local),oplog就存储在其中的oplog.$main集合里面,这个集合是一个固定集合,新的记录会自动替换旧的记录,以保证oplog不会超过预设的大小,其中的每个文档都代表主节点上执行的一个操作,oplog会记录包含所有对数据有[b]修改[/b]的操作(查询操作不会记录),默认下,oplog大小会占用64位的实例5%的可用磁盘空间。
mongo复制的过程:主节点应用业务操作[b]修改[/b]到数据库中,然后记录这些操作到oplog中,从节点复制这些oplog,然后应用这些[b]修改[/b]。ps:这些操作是异步的。如果从节点的操作已经被主节点落下很远,oplog日志在从节点还没执行完,oplog可能已经轮滚一圈了,从节点跟不上同步,复制就会停下,从节点需要重新做完整的同步,为了避免此种情况,尽量保证主节点的oplog足够大,能够存放相当长时间的操作记录。
查询oplog的大小及保存的操作记录持续的时长
查询从节点的数据源列表,其中有数据滞后的时间
> so,[b][b]修改[/b]oplog的大小:(下面介绍[/b]两种方式)
一:
The oplog exists internally as a capped collection, so you cannot modify its size in the course of normal operations.另:改变oplog大小,需要在每个节点上执行维护模式。(官方推荐)
步骤:
1:重启一个实例以单机模式,通常再关闭server之前,使用rs.stepDown() 强制primary成为secondary
2:重新创建一个新大小,其中包含旧的oplgo的入口条目的oplog
3:重启mongod作为replica set的成员
操作步骤:
1>: Restart a Secondary in Standalone Mode on a Different Port
关闭mongod实例:
重启mongod实例以单机模式,[b]修改[/b]端口,并不要加--replSet参数
备份oplog
2>: Recreate the Oplog with a New Size and a Seed Entry
保存oplog的最新的时间点
删除旧的oplog
3> :Create a New Oplog
创建一个新的Oplog,大小为2G
插入前面保存的旧的oplog的时间点的记录
4>:Restart the Member:
关闭单机实例:
[b]修改[/b]回配置
启动mongod
重复上述步骤到所有需要更改的节点。
二:
步骤:
1:停掉所有replca set节点.
2:主节点删除local库下的文件,从节点删除数据目录下所有文件.
3:[b]修改[/b]所有节点配置文件.
4:重启所有节点.
5:重新配置replca set,从节点会重新同步所有数据(initial sync).
ps:此法好处是简单,但需要停掉服务,且如果数据量很大,初始同步的成本较高
1>:关闭mongod实例(所有节点)
2>:删除local数据库下的所有文件(PRIMARY节点)
删除mongo数据目录(其他节点上操作,可不要删错哦,建议所有rm操作先mv,待无问题时候再删除)
3> [b]修改[/b]所有节点配置文件(oplogsize)
4> 重启所有节点mongod
5> 配置replica set ,详情参考:http://xuclv.blog.51cto.com/5503169/1307258 后半部分。
以上就是2种[b]修改[/b]oplog size的方法,如有遗漏,欢迎指正。
cclo的博客http://xuclv.blog.51cto.com/5503169/1308096
oplog:operations log的简写,存储在一个特殊的数据库中(local),oplog就存储在其中的oplog.$main集合里面,这个集合是一个固定集合,新的记录会自动替换旧的记录,以保证oplog不会超过预设的大小,其中的每个文档都代表主节点上执行的一个操作,oplog会记录包含所有对数据有[b]修改[/b]的操作(查询操作不会记录),默认下,oplog大小会占用64位的实例5%的可用磁盘空间。
mongo复制的过程:主节点应用业务操作[b]修改[/b]到数据库中,然后记录这些操作到oplog中,从节点复制这些oplog,然后应用这些[b]修改[/b]。ps:这些操作是异步的。如果从节点的操作已经被主节点落下很远,oplog日志在从节点还没执行完,oplog可能已经轮滚一圈了,从节点跟不上同步,复制就会停下,从节点需要重新做完整的同步,为了避免此种情况,尽量保证主节点的oplog足够大,能够存放相当长时间的操作记录。
查询oplog的大小及保存的操作记录持续的时长
repltest:PRIMARY> db.printReplicationInfo() configured oplog size: 1024MB log length start to end: 3705secs (1.03hrs) oplog first event time: Thu Oct 10 2013 11:13:29 GMT+0800 (CST) oplog last event time: Thu Oct 10 2013 12:15:14 GMT+0800 (CST) now: Fri Oct 11 2013 16:33:42 GMT+0800 (CST)
查询从节点的数据源列表,其中有数据滞后的时间
repltest:PRIMARY> db.printSlaveReplicationInfo() source: 172.16.62.138:27017 syncedTo: Fri Oct 11 2013 16:38:16 GMT+0800 (CST) = 1 secs ago (0hrs) source: 172.16.62.131:27017 no replication info, yet. State: ARBITER
> so,[b][b]修改[/b]oplog的大小:(下面介绍[/b]两种方式)
一:
The oplog exists internally as a capped collection, so you cannot modify its size in the course of normal operations.另:改变oplog大小,需要在每个节点上执行维护模式。(官方推荐)
步骤:
1:重启一个实例以单机模式,通常再关闭server之前,使用rs.stepDown() 强制primary成为secondary
2:重新创建一个新大小,其中包含旧的oplgo的入口条目的oplog
3:重启mongod作为replica set的成员
操作步骤:
1>: Restart a Secondary in Standalone Mode on a Different Port
关闭mongod实例:
repset:PRIMARY> use admin repset:PRIMARY> db.shutdownServer()
重启mongod实例以单机模式,[b]修改[/b]端口,并不要加--replSet参数
#vim /etc/mongo.conf dbpath=/var/lib/mongodb logpath=/var/log/mongodb/mongo.log pidfilepath=/var/run/mongo.pid directoryperdb=true logappend=true #replSet=repset bind_ip=172.16.62.137,127.0.0.1 port=37017 oplogSize=2000 fork=true
# mongod -f /etc/mongo.conf
备份oplog
# mongodump --db local --collection 'oplog.rs' --port 37017
2>: Recreate the Oplog with a New Size and a Seed Entry
保存oplog的最新的时间点
> use local > db.temp.save( db.oplog.rs.find( { }, { ts: 1, h: 1 } ).sort( {$natural : -1} ).limit(1).next() ) > db.temp.find()
删除旧的oplog
> db.oplog.rs.drop()
3> :Create a New Oplog
创建一个新的Oplog,大小为2G
> db.runCommand( { create: "oplog.rs", capped: true, size: (2 * 1024 * 1024 * 1024) } )
插入前面保存的旧的oplog的时间点的记录
> db.oplog.rs.save( db.temp.findOne() ) > db.oplog.rs.find()
4>:Restart the Member:
关闭单机实例:
> use admin > db.shutdownServer()
[b]修改[/b]回配置
# vim /etc/mongo.conf dbpath=/var/lib/mongodb logpath=/var/log/mongodb/mongo.log pidfilepath=/var/run/mongo.pid directoryperdb=true logappend=true replSet=repset bind_ip=172.16.62.137,127.0.0.1 port=27017 oplogSize=2000 fork=true
启动mongod
# mongod -f /etc/mongo.conf
重复上述步骤到所有需要更改的节点。
二:
步骤:
1:停掉所有replca set节点.
2:主节点删除local库下的文件,从节点删除数据目录下所有文件.
3:[b]修改[/b]所有节点配置文件.
4:重启所有节点.
5:重新配置replca set,从节点会重新同步所有数据(initial sync).
ps:此法好处是简单,但需要停掉服务,且如果数据量很大,初始同步的成本较高
1>:关闭mongod实例(所有节点)
> use admin > db.shutdownServer()
2>:删除local数据库下的所有文件(PRIMARY节点)
# rm -rf /var/lib/mongodb/local/*
删除mongo数据目录(其他节点上操作,可不要删错哦,建议所有rm操作先mv,待无问题时候再删除)
# rm -rf /var/lib/mongodb/*
3> [b]修改[/b]所有节点配置文件(oplogsize)
# vim /etc/mongo.conf dbpath=/var/lib/mongodb logpath=/var/log/mongodb/mongo.log pidfilepath=/var/run/mongo.pid directoryperdb=true logappend=true replSet=repset bind_ip=172.16.62.137,127.0.0.1 port=27017 oplogSize=2000 fork=true
4> 重启所有节点mongod
> mongod -f /etc/mongo.conf
5> 配置replica set ,详情参考:http://xuclv.blog.51cto.com/5503169/1307258 后半部分。
以上就是2种[b]修改[/b]oplog size的方法,如有遗漏,欢迎指正。
cclo的博客http://xuclv.blog.51cto.com/5503169/1308096
相关文章推荐
- mongodb查看连接数、同步时间、oplog及修改表名的操作
- mongodb修改oplog大小
- 修改mongodb oplog size
- Linux 内核stack size 修改 限制Mongodb 内存开销
- 修改mongodb oplog size
- 自己也遇到了-db_recovery_file_dest_size 修改大一点
- 修改RenderTexture的size
- 使用bcdedit修改TFTP传输blksize和windowsize以加快PXE启动速度
- 对于ORACLE RAC集群修改MAX_STRING_SIZE的方法(varchar2字段扩展到32K)
- ini_set()函数的使用 以及 post_max_size,upload_max_filesize的修改方法
- 【JAVA学习】tomcat内存溢出,修改设置。-Xss256m -Xms512m -Xmx800m -XX:MaxPermSize=512m
- Map数量的修改-computeSplitSize
- mongodb 日志文件 oplog
- MongoDB内存配置 --wiredTigerCacheSizeGB
- MongoDB3.2 之 oplogSize修改
- MongoDB(二):文档的增加修改和删除.md
- mongodb 增加、删除、修改、查询
- Android - Android Studio修改字体(font)大小(size)
- (转)MongoDB 增加用户 删除用户 修改用户 读写权限 只读权限,
- 修改SequenceFileInputFormat hdfs blocksize