MongoDB的分片集群 :mongodb6.x分片集群离线搭建&开启安全认证
在MongoDB 6.x中,我们可以使用以下命令来创建分片集群并启用安全认证:
- 创建密钥文件:
openssl rand -base64 756 > mongodb-keyfile
chmod 600 mongodb-keyfile
- 启动配置服务器 (cs1.example.com):
mongod --configsvr --dbpath /data/configdb --port 27019 --logpath /var/log/mongodb/configsvr.log --fork --bind_ip_all --replSet csReplSet
- 启动分片(shard1.example.com 和 shard2.example.com):
mongod --shardsvr --dbpath /data/sharddb0 --port 27018 --logpath /var/log/mongodb/shardsvr0.log --fork --bind_ip_all --replSet shardReplSet
mongod --shardsvr --dbpath /data/sharddb1 --port 27018 --logpath /var/log/mongodb/shardsvr1.log --fork --bind_ip_all --replSet shardReplSet
- 配置复制集:
mongo --port 27019
rs.initiate(
{
_id: "csReplSet",
members: [
{ _id: 0, host: "cs1.example.com:27019" }
]
}
)
rs.initiate(
{
_id: "shardReplSet",
members: [
{ _id: 0, host: "shard1.example.com:27018" },
{ _id: 1, host: "shard2.example.com:27018" }
]
}
)
- 启动mongos实例 (router.example.com):
mongos --configdb csReplSet/cs1.example.com:27019 --port 27017 --logpath /var/log/mongodb/mongos.log --fork --bind_ip_all
- 连接到mongos并启用安全认证:
mongo --port 27017
use admin
db.runCommand({ enableSharding: "testdb" })
db.createUser({
user: "mongoadmin",
pwd: "adminpassword",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "clusterAdmin" ]
})
db.auth("mongoadmin", "adminpassword")
db.runCommand({ shardCollection: "testdb.testcollection", key: { _id: 1 } })
以上步骤创建了一个配置服务器、两个分片和一个mongos实例,并启用了安全认证。记得替换mongodb-keyfile
、cs1.example.com
、shard1.example.com
、shard2.example.com
和router.example.com
为你自己的服务器地址,以及testdb
、testcollection
为你的数据库和集合名称,mongoadmin
和adminpassword
为你的用户名和密码。
评论已关闭