本文参考地址:https://docs.mongodb.com/manual/replication/
一、复制集介绍
主要目的:MongoDB可以通过在不同数据库服务器上提供多个数据副本来提供冗余并提高数据可用性,进行读写分离以及灾难备份。
MongDB复制集由一组MongDB实例组成,包含一个Primary节点及多个Secondary节点。所有数据写入Primary节点,Secondary从Primary同步写入的数据,用来对数据进行冗余备份,并提供读取作用。
以下是一个最简单的复制集模型图,由一个主节点,一个从节点,一个仲裁器组成。
仲裁器不维护数据,主要用来通过响应其他成员的心跳和选举请求来维护复制集中的主节点。
二、复制集部署
1、MongoDB安装。
首先从MongoDB官网(https://www.mongodb.com/download-center/community)下载对应安装文件MSI或者ZIP,MSI可以直接按照提示进行安装。ZIP包的话需要手动配置MongoDB存储数据、日志的文件路径,以及配置服务。
2、安装完成修改配置文件。
1 # mongod.conf 2 3 # for documentation of all options, see: 4 # http://docs.mongodb.org/manual/reference/configuration-options/ 5 6 # Where and how to store data. 7 storage: 8 dbPath: E:\mongoDB\mongoDB-27020\data 9 journal: 10 enabled: true 11 # engine: 12 # mmapv1: 13 wiredTiger: 14 engineConfig: 15 cacheSizeGB: 1 16 17 # where to write logging data. 18 systemLog: 19 destination: file 20 logAppend: true 21 path: E:\mongoDB\mongoDB-27020\log\mongod.log 22 # network interfaces 23 net: 24 port: 27020 25 bindIp: 127.0.0.1 26 #operationProfiling: 27 #复制集名称 28 replication: 29 replSetName: rs0
3、安装MongDB服务
"C:\Program Files\MongoDB\Server\4.0\bin\mongod.exe" --config "E:\mongoDB\mongoDB-27018\mongod.cfg" --serviceName "MongoDB-27018" --serviceDisplayName "MongoDB Server 27018" --install
4、启动MongDB服务
5、配置复制集
rs.initiate();//初始化副本集
rs.add("127.0.0.1:27018");//添加成员
rs.add({"host":"127.0.0.1:27019","arbiterOnly":true});//添加仲裁节点
6、查看副本集状态
rs.status();//查看副本集状态
/* 1 */ { "set" : "rs0", "date" : ISODate("2019-09-19T19:59:10.801+08:00"), "myState" : 2, "term" : NumberLong(8), "syncingTo" : "127.0.0.1:27018", "syncSourceHost" : "127.0.0.1:27018", "syncSourceId" : 1, "heartbeatIntervalMillis" : NumberLong(2000), "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1568894340, 1), "t" : NumberLong(8) }, "readConcernMajorityOpTime" : { "ts" : Timestamp(1568894340, 1), "t" : NumberLong(8) }, "appliedOpTime" : { "ts" : Timestamp(1568894340, 1), "t" : NumberLong(8) }, "durableOpTime" : { "ts" : Timestamp(1568894340, 1), "t" : NumberLong(8) } }, "lastStableCheckpointTimestamp" : Timestamp(1568894340, 1), "members" : [ { "_id" : 0, "name" : "127.0.0.1:27017", "health" : 1.0, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 669, "optime" : { "ts" : Timestamp(1568894340, 1), "t" : NumberLong(8) }, "optimeDate" : ISODate("2019-09-19T19:59:00.000+08:00"), "syncingTo" : "127.0.0.1:27018", "syncSourceHost" : "127.0.0.1:27018", "syncSourceId" : 1, "infoMessage" : "", "configVersion" : 5, "self" : true, "lastHeartbeatMessage" : "" }, { "_id" : 1, "name" : "127.0.0.1:27018", "health" : 1.0, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 664, "optime" : { "ts" : Timestamp(1568894340, 1), "t" : NumberLong(8) }, "optimeDurable" : { "ts" : Timestamp(1568894340, 1), "t" : NumberLong(8) }, "optimeDate" : ISODate("2019-09-19T19:59:00.000+08:00"), "optimeDurableDate" : ISODate("2019-09-19T19:59:00.000+08:00"), "lastHeartbeat" : ISODate("2019-09-19T19:59:09.787+08:00"), "lastHeartbeatRecv" : ISODate("2019-09-19T19:59:09.594+08:00"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "electionTime" : Timestamp(1568856315, 1), "electionDate" : ISODate("2019-09-19T09:25:15.000+08:00"), "configVersion" : 5 }, { "_id" : 2, "name" : "127.0.0.1:27019", "health" : 1.0, "state" : 7, "stateStr" : "ARBITER", "uptime" : 664, "lastHeartbeat" : ISODate("2019-09-19T19:59:09.787+08:00"), "lastHeartbeatRecv" : ISODate("2019-09-19T19:59:10.565+08:00"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "configVersion" : 5 } ], "ok" : 1.0, "operationTime" : Timestamp(1568894340, 1), "$clusterTime" : { "clusterTime" : Timestamp(1568894340, 1), "signature" : { "hash" : { "$binary" : "AAAAAAAAAAAAAAAAAAAAAAAAAAA=", "$type" : "00" }, "keyId" : NumberLong(0) } } }
原文:https://www.cnblogs.com/jingjimanbu/p/11552218.html