# mongo高可用配置 **Repository Path**: iq_java/mongoHA ## Basic Information - **Project Name**: mongo高可用配置 - **Description**: mongo高可用 - **Primary Language**: Shell - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-08-14 - **Last Updated**: 2021-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 环境准备 本次使用mongodb 4.0.6版本安装副本集 三台服务器 服务器hostname 服务器IP地址 mongodb01 192.168.19.40 mongodb02 192.168.19.41 mongodb03 192.168.19.42 开始搭建 三个节点创建目录 [root@mongodb01 ~]# mkdir -p /data/mongodb/replset/data [root@mongodb02 ~]# mkdir -p /data/mongodb/replset/data [root@mongodb02 ~]# mkdir -p /data/mongodb/replset/data 三个节点解压安装文件到对应目录,并修改文件夹名称 [root@mongodb01 ~]# tar -zxvf mongodb-linux-x86_64-rhel70-4.0.6.tgz -C /data/mongodb/ [root@mongodb01 ~]# mv /data/mongodb/mongodb-linux-x86_64-rhel70-4.0.6 /data/mongodb/mongodb_4 [root@mongodb02 ~]# tar -zxvf mongodb-linux-x86_64-rhel70-4.0.6.tgz -C /data/mongodb/ [root@mongodb02 ~]# mv /data/mongodb/mongodb-linux-x86_64-rhel70-4.0.6 /data/mongodb/mongodb_4 [root@mongodb03 ~]# tar -zxvf mongodb-linux-x86_64-rhel70-4.0.6.tgz -C /data/mongodb/ [root@mongodb03 ~]# mv /data/mongodb/mongodb-linux-x86_64-rhel70-4.0.6 /data/mongodb/mongodb_4 3个节点都启动mongodb服务(以副本集的方式) [root@mongodb01 ~]# /data/mongodb/mongodb_4/bin/mongod --dbpath=/data/mongodb/replset/data/ --logpath=/data/mongodb/replset/logs --logappend --port=27017 --fork --replSet repset [root@mongodb02 ~]# /data/mongodb/mongodb_4/bin/mongod --dbpath=/data/mongodb/replset/data/ --logpath=/data/mongodb/replset/logs --logappend --port=27017 --fork --replSet repset [root@mongodb03 ~]# /data/mongodb/mongodb_4/bin/mongod --dbpath=/data/mongodb/replset/data/ --logpath=/data/mongodb/replset/logs --logappend --port=27017 --fork --replSet repset 如果服务器上有多个IP地址的话,需要添加参数--bind_ip_all ,否则初始化集群会报错: "errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: 192.168.19.41:27017 failed with Error connecting to 192.168.19.41:27017 :: caused by :: Connection refused, 192.168.19.42:27017 failed with Error connec ting to 192.168.19.42:27017 :: caused by :: Connection refused", 参考链接: http://www.oracleonlinux.cn/2018/07/mongodb-connection-refused%E7%9A%84%E5%8F%AF%E8%83%BD%E5%8E%9F%E5%9B%A0/ 初始化副本集 在三台机器上任意一台机器登陆mongodb,本例中,登录第一个节点mongodb01 定义副本集配置变量 使用admin数据库 [root@mongodb01 ~]# /data/mongodb/mongodb_4/bin/mongo > use admin switched to db admin > config = { _id:"repset", members:[ ... {_id:0,host:"192.168.19.40:27017"}, ... {_id:1,host:"192.168.19.41:27017"}, ... {_id:2,host:"192.168.19.42:27017"}] ... } #输出如下 { "_id" : "repset", "members" : [ { "_id" : 0, "host" : "192.168.19.40:27017" }, { "_id" : 1, "host" : "192.168.19.41:27017" }, { "_id" : 2, "host" : "192.168.19.42:27017" } ] } > 初始化副本集配置 > rs.initiate(config); #输出如下 { "ok" : 1, "operationTime" : Timestamp(1553069702, 1), "$clusterTime" : { "clusterTime" : Timestamp(1553069702, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } repset:SECONDARY> 查看集群节点的状态 repset:PRIMARY> rs.status(); #输出如下 { "set" : "repset", "date" : ISODate("2019-03-20T08:17:28.676Z"), "myState" : 1, "term" : NumberLong(1), "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "heartbeatIntervalMillis" : NumberLong(2000), "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1553069844, 1), "t" : NumberLong(1) }, "readConcernMajorityOpTime" : { "ts" : Timestamp(1553069844, 1), "t" : NumberLong(1) }, "appliedOpTime" : { "ts" : Timestamp(1553069844, 1), "t" : NumberLong(1) }, "durableOpTime" : { "ts" : Timestamp(1553069844, 1), "t" : NumberLong(1) } }, "lastStableCheckpointTimestamp" : Timestamp(1553069834, 1), "members" : [ { "_id" : 0, "name" : "192.168.19.40:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 246, "optime" : { "ts" : Timestamp(1553069844, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2019-03-20T08:17:24Z"), "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "electionTime" : Timestamp(1553069713, 1), "electionDate" : ISODate("2019-03-20T08:15:13Z"), "configVersion" : 1, "self" : true, "lastHeartbeatMessage" : "" }, { "_id" : 1, "name" : "192.168.19.41:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 146, "optime" : { "ts" : Timestamp(1553069844, 1), "t" : NumberLong(1) }, "optimeDurable" : { "ts" : Timestamp(1553069844, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2019-03-20T08:17:24Z"), "optimeDurableDate" : ISODate("2019-03-20T08:17:24Z"), "lastHeartbeat" : ISODate("2019-03-20T08:17:27.387Z"), "lastHeartbeatRecv" : ISODate("2019-03-20T08:17:28.019Z"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "192.168.19.42:27017", "syncSourceHost" : "192.168.19.42:27017", "syncSourceId" : 2, "infoMessage" : "", "configVersion" : 1 }, { "_id" : 2, "name" : "192.168.19.42:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 146, "optime" : { "ts" : Timestamp(1553069844, 1), "t" : NumberLong(1) }, "optimeDurable" : { "ts" : Timestamp(1553069844, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2019-03-20T08:17:24Z"), "optimeDurableDate" : ISODate("2019-03-20T08:17:24Z"), "lastHeartbeat" : ISODate("2019-03-20T08:17:27.388Z"), "lastHeartbeatRecv" : ISODate("2019-03-20T08:17:27.028Z"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "192.168.19.40:27017", "syncSourceHost" : "192.168.19.40:27017", "syncSourceId" : 0, "infoMessage" : "", "configVersion" : 1 } ], "ok" : 1, "operationTime" : Timestamp(1553069844, 1), "$clusterTime" : { "clusterTime" : Timestamp(1553069844, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } repset:PRIMARY> 至此,整个副本集已经搭建成功了。 TIPS:可以将mongodb启动服务的参数写入配置文件,例如/etc/mongod.conf,启动的时候使用该配置文件启动 [root@mongodb01 ~]# /data/mongodb/mongodb_4/bin/mongod -f /etc/mongod.conf --replSet repset