为了更清晰地描述“mongodb linux下集群搭建过程”的完整攻略,我将按照以下格式来回复你的问题。
1. 环境准备
在开始搭建集群之前,需要先准备好以下的环境:
- 3台或3台以上linux服务器。这里以CentOS7为例,版本为7.9。
- 在每台服务器上都安装好MongoDB。
2. 集群搭建步骤
2.1 配置主节点
第一步是配置主节点。你需要在其中一台服务器上创建一个MongoDB配置文件 mongod.conf
,并添加以下内容:
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
processManagement:
fork: true
net:
bindIp: 主节点ip地址
port: 主节点端口号
replication:
replSetName: rs0
请注意,mongod.conf
文件是一个YAML格式的文件,所以你需要缩进。这个配置文件会帮助你配置MongoDB的主节点,并告诉它监听哪个IP地址和端口号,以及它的复制集名称是什么。
2.2 启动MongoDB主节点
第二步是启动MongoDB主节点。使用以下命令来启动它:
mongod --config /etc/mongod.conf
2.3 初始化副本集
第三步是初始化副本集。在主节点上,使用以下命令:
mongo
接着进入 MongoDB Shell,输入以下命令:
rs.initiate()
这条命令将启动MongoDB的初始化副本集过程,你应该会看到如下输出:
{
"info2" : "no configuration explicitly specified -- making one",
"me" : "localhost:27017",
"ok" : 1
}
然后,你需要在这个 Shell 提示符下,将当前的节点添加到副本集中:
rs.add("第二台服务器的ip地址:端口号")
例如,如果你的第二台服务器的IP地址是192.168.0.2
,端口号是27017
,则应该添加:
rs.add("192.168.0.2:27017")
接着,在Shell下输入rs.status()
,你将可以看到你的副本集现在应该是由两个节点组成了。
2.4 配置和启动副节点
第四步是在两个次要节点 (副本节点) 上配置 MongoDB。配置MongoDB的 mongod.conf
文件,就像你在第一步中配置主节点一样。主要区别是将其配置为作为普通节点加入到复制集中,而不是作为主节点。
确保在任何一个次要节点上启动 mongod
进程之前修改其配置文件,以便 replSetName
属性与主节点匹配。然后在每个次要节点上启动 mongod
进程。
2.5 重新初始化主节点
现在,我们需要重新初始化主节点以知道副节点的加入。我们可以在任何一个MongoDB Shell会话中进行,使用以下命令:
rs.reconfig()
这条命令将重新配置主节点,并将新的副节点添加到它的复制集中。
2.6 成功测试集群
执行以下命令:
mongo
在 Mongo Shell 提示符下,输入以下命令,它将打印出集群中所有成员的状态:
rs.status()
此时,你应该会看到输出,类似于:
{
"set" : "rs0",
"date" : ISODate("2021-10-22T01:18:28.264Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncSourceHost" : null,
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"majorityVoteCount" : 2,
"writeMajorityCount" : 2,
"votingMembersCount" : 2,
"writableVotingMembersCount" : 2,
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1634895500, 1),
"t" : NumberLong(1)
},
"lastCommittedWallTime" : ISODate("2021-10-22T01:11:40.076Z"),
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1634895500, 1),
"t" : NumberLong(1)
},
"readConcernMajorityWallTime" : ISODate("2021-10-22T01:11:40.076Z"),
"appliedOpTime" : {
"ts" : Timestamp(1634895500, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1634895500, 1),
"t" : NumberLong(1)
},
"lastAppliedWallTime" : ISODate("2021-10-22T01:11:40.076Z"),
"lastDurableWallTime" : ISODate("2021-10-22T01:11:40.076Z")
},
"members" : [
{
"_id" : 0,
"name" : "localhost:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 2997,
"optime" : {
"ts" : Timestamp(1634895500, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1634895500, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2021-10-22T01:11:40Z"),
"optimeDurableDate" : ISODate("2021-10-22T01:11:40Z"),
"lastHeartbeat" : ISODate("2021-10-22T01:18:27.145Z"),
"lastHeartbeatRecv" : ISODate("2021-10-22T01:18:27.645Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "",
"configVersion" : 1
},
{
"_id" : 1,
"name" : "192.168.0.2:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 665,
"optime" : {
"ts" : Timestamp(1634895500, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1634895500, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2021-10-22T01:11:40Z"),
"optimeDurableDate" : ISODate("2021-10-22T01:11:40Z"),
"lastHeartbeat" : ISODate("2021-10-22T01:18:26.199Z"),
"lastHeartbeatRecv" : ISODate("2021-10-22T01:18:27.948Z"),
"pingMs" : NumberLong(1),
"syncingTo" : "localhost:27017",
"configVersion" : 1
}
],
"ok" : 1,
"operationTime" : Timestamp(1634895500, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1634895500, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
你现在已经成功地设置了MongoDB的3节点集群!
示例说明
示例一:主节点数据遗失后恢复
如果主节点宕机或数据遗失,则需要重置整个 MongoDB 集群。这个过程看起来就像第一次启动集群。
但是,由于你的副本集初始已经有了一个主节点,因此你应该通过rs.freeze(600)
命令冻结集群,在几分钟内停止副本集中的所有读写操作。然后,你需要选择一台新机器来运行“主节点,重置它并加入到集群中。最后,使用新主节点恢复集群。
示例二:增加节点
要增加新的节点,请在要添加到集群的新节点上配置 Mongod 后,打开 MongoDB Shell 并切换到管理员模式。然后,使用 rs.add() 命令将新的节点加入副本集:
rs.add("第三台服务器的ip地址:端口号")
这样,你就成功地将第三个节点加入了集群。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mongodb linux下集群搭建过程 - Python技术站