在 Ubuntu 系统中配置 MongoDB 分片集群,通常可以按照以下步骤完成部署与初始化:

- 准备环境:首先确认你已经正确安装 MongoDB,并确保所有节点服务都能正常启动和通信。一般来说,你至少需要 3 个配置服务器、3 个分片服务器以及 2 个 mongos 路由器。为便于说明,本文使用以下命名约定:
- 配置服务器:configReplSet/hostname:27019
- 分片服务器:shardReplSet/hostname:27018
- mongos路由器:mongos/hostname:27017
- 启动配置服务器:在每一台配置服务器节点上执行以下命令:
mongod --configsvr --replSet configReplSet --dbpath /data/configdb --port 27019 --bind_ip localhost,hostname请将hostname替换为实际使用的节点主机名。
- 初始化配置服务器副本集:连接任意一台配置服务器后,执行以下命令:
mongo --port 27019进入 mongo shell 后,输入以下命令:
rs.initiate({
_id: "configReplSet",
configsvr: true,
members: [
{ _id: 0, host: "hostname:27019" }
]
})同样需要将hostname替换为对应的实际主机名。
- 启动分片服务器:在每个分片节点上运行以下命令:
mongod --shardsvr --replSet shardReplSet --dbpath /data/db --port 27018 --bind_ip localhost,hostname请将hostname替换为实际的节点主机名。
- 初始化分片服务器副本集:连接到任意一个分片服务器,执行以下命令:
mongo --port 27018进入 mongo shell 后,输入以下内容:
rs.initiate({
_id: "shardReplSet",
members: [
{ _id: 0, host: "hostname:27018" }
]
})这里的hostname也需要替换为实际节点主机名。
- 启动mongos路由器:在 mongos 路由节点上执行以下命令:
mongos --configdb configReplSet/hostname:27019 --port 27017 --bind_ip localhost,hostname请将hostname替换为真实可用的节点主机名。
- 添加分片:连接到 mongos 路由器后,执行以下命令:
mongo --port 27017在 mongo shell 中输入以下命令:
sh.addShard("shardReplSet/hostname:27018")将hostname替换为实际的分片服务器主机名,并重复此步骤,把所有分片节点依次加入 MongoDB 分片集群。
- 启用数据库分片:在 mongo shell 中执行以下命令:
sh.enableSharding("yourDatabaseName")请将yourDatabaseName替换为你计划开启分片功能的数据库名称。
- 对集合进行分片:在 mongo shell 中输入以下命令:
sh.shardCollection("yourDatabaseName.yourCollectionName", { "shardKey": 1 })将yourDatabaseName和yourCollectionName分别替换为实际需要分片的数据库名称与集合名称,并把shardKey替换为你选择的分片键。
完成以上操作后,你的 MongoDB 分片集群在 Ubuntu 环境下就已经配置成功。后续你可以开始向集群写入数据,同时也可以根据业务规模和性能需求,继续扩展更多分片节点或配置服务器。
