mongodb分布式集群部署,集群分片策略(二)
)
sh.shardCollection("events.alerts", { "_id": "hashed" } )
这些分片操作按顺序依次表示为:
数据库records 中的People集合使用了片键{ “zipcode” : 1, “name” : 1 }
这个片键通过字段zipcode的值进行数据分配。如果这个有大量相同的值,则会根据name字段的值对块进行分裂。
数据库people的addresses集合使用了片键{ “state” : 1, “_id” : 1 }
这个片键通过字段state的值进行数据分配。如果这个有大量相同的值,则会根据_id字段的值对块进行分裂。
数据库assets的chairs集合使用了片键{ “type” : 1, “_id” : 1 }
这个片键通过字段type的值进行数据分配。如果这个有大量相同的值,则会根据_id字段的值对块进行分裂。
数据库events的alerts集合使用了片键{ “_id” : “hashed” }
在版本2.4中最新出现的。
这个片键通过字段_id的散列值进行数据分配。MongoDB计算_id字段的散列值作为散列索引,它将提供集群中文档的均匀分布。
5、分片部署;
1. 启动mongod;
Server 192.168.155.224:
/App/mongo/bin/mongod --fork --shardsvr --port=10001 --dbpath=/data/shard1/ --logpath=/data/shard1/log.log --replSet shard1 --rest
/App/mongo/bin/mongod --fork --shardsvr --port=10002 --dbpath=/data/shard2/ --logpath=/data/shard2/log.log --replSet shard2 --rest
/App/mongo/bin/mongod --fork --shardsvr --port=10003 --dbpath=/data/shard3/ --logpath=/data/shard3/log.log --replSet shard3 --rest
Server 192.168.155.225:
/App/mongo/bin/mongod --fork --shardsvr --port=10001 --dbpath=/data/shard1/ --logpath=/data/shard1/log.log --replSet shard1 --rest
/App/mongo/bin/mongod --fork --shardsvr --port=10002 --dbpath=/data/shard2/ --logpath=/data/shard2/log.log --replSet shard2 --rest
/App/mongo/bin/mongod --fork --shardsvr --port=10003 --dbpath=/data/shard3/ --logpath=/data/shard3/log.log --replSet shard3 --rest
Server 192.168.155.223:
/App/mongo/bin/mongod --fork --shardsvr --port=10001 --dbpath=/data/shard1/ --logpath=/data/shard1/log.log --replSet shard1 --rest
/App/mongo/bin/mongod --fork --shardsvr --port=10002 --dbpath=/data/shard2/ --logpath=/data/shard2/log.log --replSet shard2 --rest
/App/mongo/bin/mongod --fork --shardsvr --port=10003 --dbpath=/data/shard3/ --logpath=/data/shard3/log.log --replSet shard3 --rest
Server 192.168.155.226:
2. 启动config Server
Server 192.168.155.224:
/App/mongo/bin/mongod --fork --configsvr --port=20001 --dbpath=/data/config1/ --logpath=/data/config1/log.log --rest
Server 192.168.155.225:
/App/mongo/bin/mongod --fork --configsvr --port=20002 --dbpath=/data/config1/ --logpath=/data/config1/log.log --rest
Server 192.168.155.223:
/App/mongo/bin/mongod --fork --configsvr --port=20003 --dbpath=/data/config1/ --logpath=/data/config1/log.log --rest
3. 启动mongos
这里为了方便的看到分片过程,将chunkSize设置为1,也就是每个块大小为1MB;
192.168.155.226:
/App/mongo/bin/mongos --fork --port=30001 --logpath=/data/route1/log.log --chunkSize=1 --configdb=192.168.155.224:20001,192.168.155.225:20002,192.168.155.223:20003
/App/mongo/bin/mongos --fork --port=30002 --logpath=/data/route2/log.log --chunkSize=1 --configdb=192.168.155.224:20001,192.168.155.225:20002,192.168.155.223:20003
/App/mongo/bin/mongos --fork --port=30003 --logpath=/data/route3/log.log --chunkSize=1 --configdb=192.168.155.224:20001,192.168.155.225:20002,192.168.155.223:20003
4. 在mongod上配置副本集
先连接到某个副本集的成员上,然后初始化副本集配置:
连接到192.168.155.224:10001上初始化副本集shard1:
#/App/mongo/bin/mongo 192.168.155.224:10001/admin
>config={_id:'shard1', members:[{_id:0, host:'19