首先要说明的rockmongo是一个很好的mongodb的查询工具,但是我却悲惨在这货手里!
一不小心把生产环境的一个数据库给删除了!恶梦就此开始。。。。。。
生产环境正常情况下数据大小有近900G但是用dump命令备份出来的文件大小只有近40G不到,现在就要用40G的数据使用mongorestore 命令恢复到900G数据,
一开始直接使用mongodbrestore恢复时,每5分钟才才能恢复1%,这不是要人命么?
搞了近7个小时后,终于有个同事(高手)说要换一种方式才行
把mongodb服务端使用numactl --interleave=all 可以成倍的提高导入速度!
OK,试一下!
没有numactl命令,使用yum安装
yum install -y numactl
再使用命令
echo 0 > /proc/sys/vm/zone_reclaim_mode
vi /proc/sys/vm/zone_reclaim_mode
sysctl -w vm.zone_reclaim_mode=0
Mongdb启动命令变成:
numactl --interleave=all mongod --directoryperdb --rest --replSet kdweiboset0 --dbpath=/data --port 27017 --fork --logpath /logs/datacore.log --logappend --maxConns 16000
再重新使用导入命令:
/kingdee/mongodb/bin/mongorestore -h 192.168.240.100 --port 27017 -d dbname --directoryperdb /mongodb/data/dump/dbname
导入速度快了N倍呀!
Mongodb服务端运行也快了好多,瞎了很多年!!!
再就是使用mongodump命令导出的数据太耗时间了,数据量大时一定不要用呀,血的教训!
还是用数据文件备份吧,停secondary 后备份再启secondary!
阅读(12400) | 评论(0) | 转发(1) |