李成石

导航

 

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需要与原来保持一致。
posted on 2018-07-10 01:12  李成石  阅读(181)  评论(0编辑  收藏  举报