MongoDB主从集群配置

#MongoDB 系统版本:CentOS 7 1804 x64

mongodb: 4.0.10

节点数量:3

默认情况下,MongoDB使用mongod用户帐户运行并使用以下默认目录,用户权限为mongod:

/var/lib/mongo (数据目录) /var/log/mongodb (日志目录)

安装mongodb

配置yum源:

vi /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
yum install -y mongodb-org

如果想安装指定版本,执行如下命令

yum install -y mongodb-org-4.0.10 mongodb-org-server-4.0.10 mongodb-org-shell-4.0.10 mongodb-org-mongos-4.0.10 mongodb-org-tools-4.0.10

如果不想在使用yum update时更新mongodb版本,可以在/etc/yum.conf配置文件中添加如下配置

vi /etc/yum.conf
	exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

修改所有节点配置文件

vi /etc/mongo.conf
	bindIp: 0.0.0.0

	replication:
	  replSetName: rs0

启动服务

systemctl start mongod

配置集群,任选一个节点,执行如下命令即可。

官方推荐节点host建议用域名,以防IP变动

mongo
>config = {
   _id : "rs0",
   members: [
	  { _id: 0, host: "1.1.1.1:27017" },
	  { _id: 1, host: "1.1.1.2:27017" },
	  { _id: 2, host: "1.1.1.3:27017" }
   ]
}
rs.initiate(config)

查看集群配置信息

rs.conf()

查看集群状态及主从信息:

rs.status()
{
"set" : "rs0",
"date" : ISODate("2019-07-03T05:55:41.262Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
	"lastCommittedOpTime" : {
		"ts" : Timestamp(0, 0),
		"t" : NumberLong(-1)
	},
	"appliedOpTime" : {
		"ts" : Timestamp(1562133341, 4),
		"t" : NumberLong(1)
	},
	"durableOpTime" : {
		"ts" : Timestamp(1562133341, 4),
		"t" : NumberLong(1)
	}
},
"lastStableCheckpointTimestamp" : Timestamp(0, 0),
"members" : [
	{
		"_id" : 0,
		"name" : "1.1.1.1:27017",
		"health" : 1,
		"state" : 1,
		"stateStr" : "PRIMARY",
		"uptime" : 267,
		"optime" : {
			"ts" : Timestamp(1562133341, 4),
			"t" : NumberLong(1)
		},
		"optimeDate" : ISODate("2019-07-03T05:55:41Z"),
		"syncingTo" : "",
		"syncSourceHost" : "",
		"syncSourceId" : -1,
		"infoMessage" : "could not find member to sync from",
		"electionTime" : Timestamp(1562133340, 1),
		"electionDate" : ISODate("2019-07-03T05:55:40Z"),
		"configVersion" : 1,
		"self" : true,
		"lastHeartbeatMessage" : ""
	},
	{
		"_id" : 1,
		"name" : "1.1.1.2:27017",
		"health" : 1,
		"state" : 2,
		"stateStr" : "SECONDARY",
		"uptime" : 12,
		"optime" : {
			"ts" : Timestamp(1562133328, 1),
			"t" : NumberLong(-1)
		},
		"optimeDurable" : {
			"ts" : Timestamp(1562133328, 1),
			"t" : NumberLong(-1)
		},
		"optimeDate" : ISODate("2019-07-03T05:55:28Z"),
		"optimeDurableDate" : ISODate("2019-07-03T05:55:28Z"),
		"lastHeartbeat" : ISODate("2019-07-03T05:55:40.023Z"),
		"lastHeartbeatRecv" : ISODate("2019-07-03T05:55:40.996Z"),
		"pingMs" : NumberLong(0),
		"lastHeartbeatMessage" : "",
		"syncingTo" : "",
		"syncSourceHost" : "",
		"syncSourceId" : -1,
		"infoMessage" : "",
		"configVersion" : 1
	},
	{
		"_id" : 2,
		"name" : "1.1.1.3:27017",
		"health" : 1,
		"state" : 2,
		"stateStr" : "SECONDARY",
		"uptime" : 12,
		"optime" : {
			"ts" : Timestamp(1562133328, 1),
			"t" : NumberLong(-1)
		},
		"optimeDurable" : {
			"ts" : Timestamp(1562133328, 1),
			"t" : NumberLong(-1)
		},
		"optimeDate" : ISODate("2019-07-03T05:55:28Z"),
		"optimeDurableDate" : ISODate("2019-07-03T05:55:28Z"),
		"lastHeartbeat" : ISODate("2019-07-03T05:55:40.025Z"),
		"lastHeartbeatRecv" : ISODate("2019-07-03T05:55:41.139Z"),
		"pingMs" : NumberLong(0),
		"lastHeartbeatMessage" : "",
		"syncingTo" : "",
		"syncSourceHost" : "",
		"syncSourceId" : -1,
		"infoMessage" : "",
		"configVersion" : 1
	}
],
"ok" : 1,
"operationTime" : Timestamp(1562133341, 4),
"$clusterTime" : {
	"clusterTime" : Timestamp(1562133341, 4),
	"signature" : {
		"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
		"keyId" : NumberLong(0)
	}
}
}

移除、添加复制节点,在PRIMARY节点上操作

rs.remove("1.1.1.1:27017")
rs.add("1.1.1.1:27017")

最后更新于