在MongoDB中实现分片主要有以下几个步骤:
1、 部署mongos路由进程和多个mongod实例。
- 需要部署两个或更多个mongod实例作为分片节点,以及一个mongos实例作为路由进程。
2、 初始化配置服务器。
- 需要部署一个或多个mongod实例作为配置服务器,并使用mongod –configsvr选项启动。
3、 添加分片节点。
- 需要连接到mongos,在一个未分片的数据库上执行addShard()将mongod实例添加为分片。
mongos> sh.addShard("localhost:27018")
4、 开启分片支持和创建分片键。
- 需要在数据库上执行enableSharding()开启分片支持,然后在集合上执行shardCollection()指定分片键。
mongos> db.adminCommand({enableSharding: "testDb"})
mongos> db.users.createIndex({user_id: 1})
mongos> db.users.shardCollection("user_id")
5、 分片集合数据和迁移块。
- 插入数据时会自动分片,也可以执行splitChunk在指定的分片键值处拆分块。
mongos> db.users.splitChunk(5, {user_id: 10})
6、 维护和监控分片集群。
- 需要监控chunk大小和分布,对过大的chunk执行拆分,修复各个分片间的数据不均衡等。
7、 配置分片集群的读写策略。
- 可以在mongos上配置默认数据库读写策略,也可以在查询时指定读策略。
8、 扩充和缩减分片集群。
- 可以通过新增或删除分片节点和配置服务器来扩充或缩减整个集群。