MongoDB分片记录

编程

特性

支持自动分片,集群自动切分数据,做负载均衡。集合切分成小块,这些块分散到若干片里,每个片只负责总数据的一部分。统一通过一个路由进程mongos来管理,它记录所有数据的存放位置,所以不用知道什么数据需要查哪个片。没有分片客户端链接mongod,分片就连接mongos

片键

那么数据分片的规律,什么数据在什么分片中,这些是如何确定的?这就要说到片键了。选择集合里的一个键,根据这个键来将数据均衡分配到分片中。如果键的变化太少可以创建符合片键

何时分片

  1. 机器磁盘不够用
  2. 单个mongod 不能满足写数据的性能
  3. 想将大量数据放在内存中提高性能

如何分片

已有的集合:建立片键后自动分片

分片涉及到:片键、片、mongos、配置服务器(存放数据和片的关系、集群的信息,mogis来读取)

  1. 建立mongos进程,需要指明配置服务器的位置:

    mongos --port 30000 --configdb localhost:2000

    分片的管理是通过 mongos的

  2. 添加片,其实就是添加mongod进程
  3. 连接mongos 为集群添加一个片、通过addshard命令添加片
  4. 切分数据,要打开 数据库的集合的分片功能

    db.runCommand({"enablesharding":"foo"})

  5. 数据库级别启用分片后,可以用shardcollection命令对集合进行分片

生产

方案:

  1. 多个配置服务器
  2. 多个mongos服务器
  3. 每个片都是副本集
  4. 正确设置w

以上是 MongoDB分片记录 的全部内容, 来源链接: utcz.com/z/516123.html

回到顶部