Mongo权威指南(分片)

分片操作:

单机测试:
$ mongo –nodb #以不带数据库的方式启动mongo shell
cluster = new ShardingTest({“shards” : 3, “chunksize” : 1})
另外启动一个mongo shell,执行 db = (new Mongo(“localhost:30999”)).getDB(“test”)
现在就得到了一个mongos的连接shell了

选取片键(shard key),作为数据拆分的依据
片键的选择:
顺序增长的key
均匀分布 Hash

  1. 创建hash索引 db.users.ensureIndex({“username” : “hashed”})
  2. sh.shardCollection("app.users", {"username" : "hashed"})
    建立分片
    启动配置服务器 mongod –configsvr –dbpath /var/lib/mongodb -f /var/lib/config/mongod.conf 可以有多个
    启动mongos mongos –configdb config-1:27019,config-2:27019,config-3:27019 -f /var/lib/mongos.conf
    添加shared
    副本集:sh.addShard("spock/server-1:27017,server-2:27017,server-4:27017") spock为副本集名称
    单独Mongod: sh.addShard("some-server:27017")
    对片键建立索引 db.users.ensureIndex({'username':1})
    对数据库启用分片功能 sh.enableSharding(“test”)
    指定分片信息 sh.shardCollection(“test.users”, {“username” : 1})
    shardCollection执行成功后,mongo会自动开始均衡数据到各个分片上
    分片操作的相关shell命令是以 sh.* 开始的,sh即shard
    多个分片上的数据库不能有重复,否则无法添加分片
    Mongos(路由)能根据数据找到chunck对应的shard是因为Mongo内部维护了一个chunk与shard的映射
    不要频繁重启mongos,这样会导致计数器重新计算,从而chunck会变得越来越大

你可能感兴趣的:(mongodb)