1.安装三节点linux环境:196.168.1.111,196.168.1.112,192.168.1.113(三节点可彼此ping通)
2.三节点安装mongodb,参考https://blog.csdn.net/yezhenxu1992/article/details/51375123 安装3.2.20 版本mongodb
3.设置/etc/mongodb.conf
#数据路径 dbpath=/var/data #日志路径 logpath=/var/log/mongodb/mongodb.log #追加保存日志 logappend=true #监听端口 port=27017 fork=true # 未认证 noauth=true # 保存mongodb pid文件 pidfilepath=/var/run/mongodb/mongod.pid # 监听mongodb ip bind_ip=196.168.1.111 # 副本集名称 replSet=spock
启动mongodb,可以使用如下脚本:
#!/bin/bash
pid_file=/var/run/mongodb/mongod.pid
pid_dir=/var/run/mongodb
data_dir=/var/data
if [ ! -e "$pid_dir" ]
then
mkdir -p $pid_dir
touch $pid_file
else
if [ ! -e "$pid_file" ]
then
touch $pid_file
fi
fi
if [ ! -e $data_dir ]
then
mkdir -p $data_dir
fi
mongod -f /etc/mongodb.conf
4.配置副本集:
mongodb连接到任一mongodb 比如:mongo 196.168.1.111/test,如下图:
config={"_id":"spock",
"members":[
{"_id":0,"host":"196.168.1.111:27017"},
{"_id":1,"host":"196.168.1.112:27017"},
{"_id":2,"host":"196.168.1.113:27017"}
]}
{
"_id" : "spock",
"members" : [
{
"_id" : 0,
"host" : "196.168.1.111:27017"
},
{
"_id" : 1,
"host" : "196.168.1.112:27017"
},
{
"_id" : 2,
"host" : "196.168.1.113:27017"
}
]
}
rs.initiate(conf)
5.副本集初始化完成后,三个节点上mongodb会根据初始化的先后顺序分出PRIMARY和SECONDARY.
6.三个节点中,如果primary节点异常,两个secondary节点中会自动选出primary节点,不影响提供读写功能。但是当此时,primary节点挂点,只剩下secondary时,服务不再提供写入功能,只能读取数据。除非强制将secondary转为primary后,在一个节点上提供读写功能。
比如只剩下一个节点196.168.1.111节点,强制重新配置副本集。
config={"_id":"spock",
"members":[
{"_id":0,"host":"196.168.1.111:27017"},
]}
{
"_id" : "spock",
"members" : [
{
"_id" : 0,
"host" : "196.168.1.111:27017"
},
]
}
rs.reconfig(conf,{'force':true})
rs.reconfig(conf,{'force':true})强制重新配置副本集,注意在config中_id需要与原来保持一致。
浙公网安备 33010602011771号