安装
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.2.6.tgz
tar zxvf mongodb-linux-x86_64-2.2.6.tgz
mv mongodb-linux-x86_64-2.2.6 mongodb
cd mongodb
mkdir log # 添加日志文件目录
mkdir data # 添加数据目录
mkdir conf # 添加配置文件目录
mkdir arbiter # 添加仲裁服务目录
配置文件
进入mongodb下的conf目录
新建mongod.conf
编辑mongod.conf,在其中添加如下内容:
# mongod.conf
logpath = /data/mongodb/log/mongod.log # 日志输出目录
logappend = true # 如果为false日志会覆盖
fork = true # true为后台运行
quiet = true # 安静输出
port = 27017 # 端口
maxConns = 1024 # 最大连接数
directoryperdb = true # 是否按数据库分目录存放数据
dbpath = /data/mongodb/data # 数据目录
autoresync = true # 如果从库与主库同步数据差得多,自动重新同步
oplogSize = 1024 # 日志大小(单位M)
replSet = replSet1 # 复制集名称
rest = true # 开启简单的rest API
journal = true # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里
fastsync=true # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步
权限和分组
chown -R root.root mongodb
chmod -R 755 mongodb
启动服务
cd mongodb/bin/
./mongod -f /data/mongodb/conf/mongod.conf
启动仲裁服务
如果一个复制集里节点数小于3个则需要通过添加仲裁节点的方式使节点总数保持在3个或3个以上,否则当有节点掉电时无法竞选新的PRIMARY
cd mongodb/bin/
./mongod -replSet replSet1 -port 27018 -dbpath /data/mongodb/arbiter/ -logpath /data/mongodb/arbiter/arbiter.log -logappend -quiet -fork
停止服务
关闭MongoDB服务请进入mongo shell执行如下命令:
配置复制集
例如,已经按上述方法部署了3个MongoDB服务:220.181.154.204,220.181.154.205,220.181.154.206
则打开任意一个MongoDB的客户端,按下述红色字体部分进行配置,其中'replSet1'为复制集名称,host对应复制集中各节点的地址和端口
cd mongodb/bin/
./mongo
cfg={_id:'replSet1',members:[
{_id:1,host:'220.181.154.204:27017'},
{_id:2,host:'220.181.154.205:27017'},
{_id:3,host:'220.181.154.206:27017'}]
};
rs.initiate(cfg);
出现下面信息则配置成功:
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
添加节点:
rs.add("220.181.154.204:27017");
添加仲裁节点:
rs.addArb("220.181.154.204:27018");
查看复制集状态:
rs.status();
设置从库可查询
通过shell查询从库可在从库shell中执行如下命令:
rs.slaveOk()
注:复制集中默认从库不可读写,想要查询从库必须对每个会话进行如上设置后才能查询
通过代码查询从库需在mongodb连接配置中进行如下配置:
<mongo:mongo
replica-set="220.181.154.204:27017,220.181.154.205:27017, 220.181.154.204:27018">
<mongo:options slave-ok="true"/>
</mongo:mongo>
注:以上所有红色字体部分请根据实际情况进行修改