本文基于MongoDB 4.2.3介绍如何搭建shard集群服务,环境如下表所示:
主机 | configsvr | mongos | shard1 | shard2 | shard3 |
---|---|---|---|---|---|
hdp06 | 27017 | 27018 | 27019 | 27020 | 27021 |
hdp07 | 27017 | 27018 | 27019 | 27020 | 27021 |
hdp08 | 27017 | 27018 | 27019 | 27020 | 27021 |
在三个节点分别创建以下目录:
mkdir -p /db/mongodata/{config,router,shard}
mkdir -p /db/mongodata/config/{data,logs}
mkdir -p /db/mongodata/router/logs
mkdir -p /db/mongodata/shard/{data,logs}
mkdir -p /db/mongodata/shard/data/{shard1,shard2,shard3}
mkdir -p /db/mongodata/shard/logs/{shard1,shard2,shard3}
chown -R mongo:mongo /db
[root@hdp06 ~]# vi /db/mongodata/config/mongodb.config
net:
bindIp: 0.0.0.0
port: 27017
processManagement:
fork: "true"
replication:
replSetName: configRS
sharding:
clusterRole: configsvr
storage:
dbPath: /db/mongodata/config/data
systemLog:
destination: file
path: /db/mongodata/config/logs/mongodb.log
# network interfaces IPV6配置
net:
port: 27017
# bindIp: 0.0.0.0
bindIpAll: true
ipv6: true
[root@hdp06 ~]# scp /db/mongodata/config/mongodb.config hdp07:/db/mongodata/config
[root@hdp06 ~]# scp /db/mongodata/config/mongodb.config hdp08:/db/mongodata/config
[root@hdp06 ~]# mongod -f /db/mongodata/config/mongodb.config
[root@hdp07 ~]# mongod -f /db/mongodata/config/mongodb.config
[root@hdp08 ~]# mongod -f /db/mongodata/config/mongodb.config
在一个节点上执行集群初始化操作:
[root@hdp06 ~]# mongo
>rs.initiate(
{
_id: "configRS",
configsvr: true,
members: [
{ _id : 0, host : "hdp06:27017" },
{ _id : 1, host : "hdp07:27017" },
{ _id : 2, host : "hdp08:27017" }
]
}
)
--输出结果如下
{
"ok" : 1,
"$gleStats" : {
"lastOpTime" : Timestamp(1615860548, 1),
"electionId" : ObjectId("000000000000000000000000")
},
"lastCommittedOpTime" : Timestamp(0, 0),
"$clusterTime" : {
"clusterTime" : Timestamp(1615860548, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1615860548, 1)
}
--其他节点验证
[root@hdp07 ~]# mongo
......
configRS:SECONDARY> rs.status()
{
"set" : "configRS",
"date" : ISODate("2021-03-16T02:10:07.503Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"configsvr" : true,
"heartbeatIntervalMillis" : NumberLong(2000),
"majorityVoteCount" : 2,
"writeMajorityCount" : 2,
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1615860600, 1),
"t" : NumberLong(1)
},
"lastCommittedWallTime" : ISODate("2021-03-16T02:10:00.285Z"),
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1615860600, 1),
"t" : NumberLong(1)
},
"readConcernMajorityWallTime" : ISODate("2021-03-16T02:10:00.285Z"),
"appliedOpTime" : {
"ts" : Timestamp(1615860600, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1615860600, 1),
"t" : NumberLong(1)
},
"lastAppliedWallTime" : ISODate("2021-03-16T02:10:00.285Z"),
"lastDurableWallTime" : ISODate("2021-03-16T02:10:00.285Z")
},
"lastStableRecoveryTimestamp" : Timestamp(1615860559, 2),
"lastStableCheckpointTimestamp" : Timestamp(1615860559, 2),
"electionCandidateMetrics" : {
"lastElectionReason" : "electionTimeout",
"lastElectionDate" : ISODate("2021-03-16T02:09:18.946Z"),
"electionTerm" : NumberLong(1),
"lastCommittedOpTimeAtElection" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"lastSeenOpTimeAtElection" : {
"ts" : Timestamp(1615860548, 1),
"t