MongoDB中怎么管理副本集
这期内容当中小编将会给大家带来有关MongoDB中怎么管理副本集,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
1)诊断
副本集中的机器,可以使用
>db.printReplicationInfo()
查看主数据库的复制的状态。
使用
>db.printSlaveReplicationInfo()
查看从数据库的复制的状态,可以查看主从是否有复制延迟
2)oplog设置和变更oplog大小
完整同步,非常消耗时间,手动重新同步使用命令:
>db.runCommand({"resync":1})
使用--oplogSize参数设置更大的oplog大小。
假设MongoDB数据目录是/data/db,关闭主节点的mongod服务后使用命令:
>rm /data/db/local.*
>mongod --oplog=8038 --master
在启动MongoDB时使用了参数--noprealloc可以关闭空间预分配。
例如我们要生成20GB的文件空间,使用命令:
cd /tmp/local
for i in {0..9}
do
echo $i
head -c 2146435072 /dev/zero > local.$i
done
然后关闭MongoDB主节点进行数据文件移动
mv /data/db/local.* /safe/data
mv /tmp/local/* /data/db/
先将原local文件夹中的数据备份到/safe/data目录下,然后把我们预分配的空间文件/tmp/local/*移到数据目录/data/db/中,这样就完成了oplog的空间手动预分配。
重启主节点时就可以把oplog的大小设置成20G了。使用如下命令:
mongod --master --oplogSize=20000
3) 阻塞复制使用
从节点的复制跟不上主节点的写入操作时除了变更oplog的大小之外,还有一种方式能够解决,那就是阻塞主节点的写入,直到从节点慢慢跟上来之后再放开阻塞。使用命令如下:
>db.runCommand({getLastError:1,w:2});
w的值表示包括主节点在内,至少2个服务器记录了写入操作之后才返回写入的结果。w的值可以修改,值越大阻塞越明显,写操作越慢。
上述就是小编为大家分享的MongoDB中怎么管理副本集了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。