环境:centos 6.5、 mongodb 3.2.7
在一台虚拟机中启动三个mongodb服务来模拟
ip:192.168.1.219
端口:27017、27018、27019
27017:配置文件:
port=27017 #配置端口号
dbpath=data #配置数据存放的位置,这里使用相对路径
logpath=log/mongodb.log #配置日志存放的位置
logappend=true #日志使用追加的方式
fork=true #设置在后台运行
replSet=YAOMONGO #配置复制集名称,该名称要在所有的服务器一致
27018 配置文件:
port=27018 #配置端口号
dbpath=data #配置数据存放的位置,这里使用相对路径
logpath=log/mongodb.log #配置日志存放的位置
logappend=true #日志使用追加的方式
fork=true #设置在后台运行
replSet=YAOMONGO #配置复制集名称,该名称要在所有的服务器一致
27019 配置文件
port=27019 #配置端口号
dbpath=data #配置数据存放的位置,这里使用相对路径
logpath=log/mongodb.log #配置日志存放的位置
logappend=true #日志使用追加的方式
fork=true #设置在后台运行
replSet=YAOMONGO #配置复制集名称,该名称要在所有的服务器一致
启动每个实例
如果启动出现以下错误,可能是当前的用户权限不足
ERROR: child process failed, exited with error number 1
全部实例启动完成后,需要进入其中一个实例进行配置
其中设置27018为arbiter节点
进入端口号:27017进行配置
./bin/mongo 127.0.0.1/admin
配置
config = {
_id:"YAOMONGO",
members:[
{_id:0,host:"192.168.1.219:27017"},
{_id:1,host:"192.168.1.219:27018",arbiterOnly:true},
{_id:2,host:"192.168.1.219:27019"}
]
}
使用rs.initiate进行初始化
rs.initiate(config);
使用rs.status()查看状态
进入各个节点验证,略
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
验证复制集同步
主库插入数据 端口:27017
从库查看数据 端口:27019
从库查询数据需要设置slaveOK为true
查看arbiter节点 端口:27018,由于arbiter节点是仲裁节点,只参与投票,不接收复制的数据,也不能成为primary节点
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
复制集开启认证
openssl rand -base64 64 > keyfile.dat
#生成64字节的密钥文件
chmod 600 keyfile.dat
#建议把密钥文件的权限设置为600(针对启动mongo实例的用户)
config = {
_id:"YAOMONGO",
members:[
{_id:0,host:"192.168.1.219:27017"},
{_id:1,host:"192.168.1.219:27018",arbiterOnly:true},
{_id:2,host:"192.168.1.219:27019",priority:5}
]
}
rs.
stepDown
(
stepDownSecs
,
secondaryCatchUpPeriodSecs
)