Centos7 搭建Mongodb 分片集群4.0/ PSA(三成员副本集)
以下是搭建MongoDB 4.0分片集群的步骤和示例配置:
- 安装MongoDB 4.0:
sudo tee /etc/yum.repos.d/mongodb-org-4.0.repo <<EOF
[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
EOF
sudo yum install -y mongodb-org
配置分片(shard)服务器:
编辑
/etc/mongod.conf
文件,添加以下配置到shardX
部分(例如shard1
):
sharding:
clusterRole: shardsvr
配置配置服务器(config server):
编辑
/etc/mongod.conf
文件,添加以下配置:
sharding:
clusterRole: configsvr
配置路由器(mongos):
无需对
/etc/mongod.conf
进行配置,mongos启动后将连接到配置服务器。- 启动MongoDB服务:
sudo systemctl start mongod
初始化分片集群:
在其中一台路由器服务器上运行以下命令:
mongo --host <mongos-server-address> --port 27017
然后运行:
sh.enableSharding("mydb")
sh.shardCollection("mydb.mycollection", {"mykey": 1})
替换 <mongos-server-address>
为你的mongos服务器地址,mydb
为你想要分片的数据库名,mycollection
为集合名,mykey
为分片键。
配置复制集:
对每个分片和配置服务器,配置复制集。例如,对于名为
shard1
的分片:
mongo --host <shard1-address> --port 27017
然后运行:
rs.initiate(
{
_id: "shard1RepSet",
members: [
{ _id: 0, host: "<shard1-address>:27017" },
{ _id: 1, host: "<shard2-address>:27017" },
{ _id: 2, host: "<shard3-address>:27017", arbiterOnly: true }
]
}
)
确保替换 <shard1-address>
和 <shard2-address>
以及 <shard3-address>
为你的服务器地址,并且设置一个仲裁节点(arbiter)。对其他分片和配置服务器重复相同的步骤。
配置mongos与复制集交互:
在mongos服务器上运行:
mongo --host <mongos-server-address> --port 27017
然后添加分片和配置服务器到复制集配置:
sh.status()
sh.addShard("shard1RepSet/<shard1-address>:27017")
sh.addShard("shard1RepSet/<shard2-address>:27017")
sh.addShard("shard1RepSet/<shard3-address>:27017")
sh.addShard("configReplSet/<config-server1-address>:27017")
sh.addShard("configReplSet
评论已关闭