MongoDB配置Sharding (负载均衡)

Mongod DB中有Sharding(分片)和Replication(副本)两个功能。

前者主要是将数据水平分割到各个结点上,达到负载均衡的目的。

后者用于故障恢复。即一般一个Sharding有若干个Replication。

本文只讨论Sharding的情况,因为我们的环境机器本来就不够,不会拿来做Replication的。

配置Sharding有如下三个要素

1、1~1000个Sharding。

2、1~3个mongo config服务器。

3、1~n个mongo routing服务器。

下面讨论配置

环境,我们用两个机器A和B,配置两个Shards。

1、下载

2、执行mongod

在两个机器上分别启动mongod,如下:

至此,A、B机器上启动了两个mongod进程,端口为27018

3、启动一个mongod config server

测试环境可以只有一个config server,线上环境建议有3个。我们就用第一台机器吧。

至此,A机器上启动了mongod(config)进程,端口27019

4、启动一个mongos Router

mongos的–configdb参数如下:

要指定上面mongod(config)进程,由于我们只有1个,写一个就好。

5、配置Shard

刚才我们只是将各自部分启动起来,现在需要在中央控制中,将Shards对应到具体的mongod。

首先连接任意一个mongos(我们只有一个的说):

6、启用Shards

必须在对应的DB/Coll上启用Shards,数据负载均衡才能生效!否则,只会存在一个Shards上!

注意在Colleciton启用Shards时候,还需要一个key做为划分依据。

关于划分key的选择:

1、最好是在插入中能包含的字段(否则会把插入发配到每个Shard上,速度很慢)。

2、尽量随机化。

7、创建DB、Coll

我们创建db:db

再创建一个Coll: people

由于都是lazy-make,所以我们直接创建数据即可

插入数据

备注:数据到达一定规模才会开始进行负载均衡!

参考文章1:《MongoDB auto shard配置说明》

参考文章2:《Configuring Sharding》

8、其他命令:

列出db

列出collection

切换数据库

列出collection详情

删除Collection

创建索引

更多DB级别的可以参考:http://www.mongodb.org/display/DOCS/DBA+Operations+from+the+Shell

One thought on “MongoDB配置Sharding (负载均衡)

  1. coder4wutianzhi

    您好,您的文章里说mongodb数据库负载均衡,当数据量到一定规模才会进行负载均衡,请问这个数据量是多大啊?哪里有限制?在mongdb里怎么配置啊

    谢谢

    Reply

Leave a Reply

Your email address will not be published.