1. 环境准备
- 准备至少三个MongoDB实例(例如:
mongod1
、mongod2
、mongod3
)。 - 配置网络,确保这些实例可以相互通信。
2. 配置文件(以mongod1为例)
4. 初始化副本集
连接到其中一个实例(例如:mongod1
),并执行以下命令:
mongo --port 27017
use admin
rs.initiate(
{
_id: "myReplSet",
members: [
{ _id: 0, host: "localhost:27017" },
{ _id: 1, host: "<mongod2-ip>:27017" },
{ _id: 2, host: "<mongod3-ip>:27017", arbiterOnly: true } // 可以设置为仲裁节点
]
}
)
5. 添加更多成员
如果之前没有将所有成员添加到配置中,可以使用rs.add()
命令。
6. 验证副本集状态
1.rs.status()
分片(Sharding)
1. 环境准备
- 部署Config Server(配置服务器)。
- 准备Shard Server(分片服务器),这些服务器上运行着分片实例。
- 准备一个或多个Mongos实例(路由实例),它们处理客户端请求并将数据路由到正确的分片。
2. 配置文件(Config Server和Shard Server)
类似副本集,但不需要replication
部分,并可能需要指定sharding
配置。
3. 启动Config Server和Shard Server
4. 连接到Mongos实例
mongo --host <mongos-ip> --port <mongos-port>
5. 添加Shard到集群
use admin sh.addShard("rs0/<mongod1-ip>:27017,<mongod2-ip>:27017") // rs0是Shard Server的副本集名称
6. 启用分片
首先,需要为数据库启用分片:
sh.enableSharding("myDatabase")
然后,为集合指定分片键:
sh.shardCollection("myDatabase.myCollection", { myShardKey: 1 })
7. 验证分片状态
sh.status()