本文写于 2015 年。
MongoDB 是业界比较流行的文档数据库。

运行环境

操作系统:CentOS 7 64bit

MongoDB:3.0.4

需求说明

采用二进制安装包方式安装,配置 MongoDB 副本集

安装过程

启动 MongoDB

下载版本,解压后,可直接启动

副本集启动命令

/work/admin/mongodb-linux-x86_64-rhel70-3.0.4/bin/mongod --dbpath /work/admin/mongodb-linux-x86_64-rhel70-3.0.4/data --logpath /work/admin/mongodb-linux-x86_64-rhel70-3.0.4/logs/mongo.log --oplogSize 1000 --replSet vbox --fork

配置副本集

进入任一台 mongo 客户端:
use admin
配置

config = { _id:"vbox", members:[
... {_id:0,host:"192.168.100.1:27017"},
... {_id:1,host:"192.168.100.2:27017"},
... {_id:2,host:"192.168.100.3:27017"}]
... }

初始化

rs.initiate(config);

查看状态

rs.status();

开启副本集slave可读
在所有的机器上执行rs.slaveOk();

上述配置会失效
vi ~/.mongorc.js
增加一行rs.slaveOk();

rs.reconfig()函数修改副本集

var config=rs.config()
config.members[0].host="vboxmongodb1.linglongtech.com:27017"
rs.reconfig(config)

修改优先级

config=rs.config()

config.members[0].priority = 100
config.members[1].priority = 1
config.members[2].priority = 1

rs.reconfig(config)

问题处理

在第一次启动 Mongodb 时 ,可能会出现报错,根据信息修改系统配置。

修改 /etc/rc.d/rc.local 文件,新增下列内容,重启服务器后,再次验证。

注意:/etc/rc.d/rc.local 需要有执行权限。

echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
sleep 5 # 初步判断云盘挂载可能存在时延,设置sleep参数
blockdev --setra 256 /dev/vdc1