MongoDB Auto-Sharding 解决了海量存储和动态扩容的问题,但离实际生产环境所需的高可靠、高可用还有些距离,所以有了” Replica Sets + Sharding”的解决方案:
Shard :
使用 Replica Sets,确保每个数据节点都具有备份、自动容错转移、自动恢复能力。
Config :
使用 3 个配置服务器,确保元数据完整性
Route :
使用 3 个路由进程,实现负载平衡,提高客户端接入性能
开放端口如下:
激活数据库及集合的分片
Shard :
使用 Replica Sets,确保每个数据节点都具有备份、自动容错转移、自动恢复能力。
Config :
使用 3 个配置服务器,确保元数据完整性
Route :
使用 3 个路由进程,实现负载平衡,提高客户端接入性能
1 配置 shard1 所用到的 Replica Sets
ServerA:
mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shard1_1 --logpath /data/shard1_1/shard1_1.log --logappend –fork
serverB:
mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shard1_1 --logpath /data/shard1_1/shard1_1.log --logappend –fork
serverC:
mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shard1_1 --logpath /data/shard1_1/shard1_1.log --logappend --fork
用 mongo 连接其中一台机器的 27017 端口的 mongod,初始化 Replica Sets“shard1”
2 配置 shard2 所用到的 Replica Sets
同上,配置share2。3 配置 3 台 Config Server
mongod --configsvr --dbpath /data/config --logappend --fork --port 20000 --logpath /data/config/config.log4 配置 3 台 Route Process
mongos --configdb 192.168.3.231:20000,192.168.3.232:20000,192.168.3.233:20000 --port 30000 --chunkSize 1 --logpath /data/mongos.log --logappend --fork5 配置 Shard Cluster
连接到其中一台机器的端口 30000 的 mongos 进程,并切换到 admin 数据库做以下配置激活数据库及集合的分片