安装linux
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.2.6.tgzmongodb
tar zxvf mongodb-linux-x86_64-2.2.6.tgzshell
mv mongodb-linux-x86_64-2.2.6 mongodb数据库
cd mongodbapp
mkdir log # 添加日志文件目录ide
mkdir data # 添加数据目录字体
mkdir conf # 添加配置文件目录ui
mkdir arbiter # 添加仲裁服务目录spa
配置文件rest
进入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>
注:以上全部红色字体部分请根据实际状况进行修改