MongoDB Sharding Cluster(分片集群)安装

作者: jaclon 分类: Linux, PHP, 数据库 发布时间: 2013-04-03 17:33 ė 61条评论

前面讲了Mongodb单机模式安装,今天要讲的是分片集群安装;分片集群由三大服务组成

  • Shard Server: mongod 实例,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障
  • Config Server: mongod 实例,存储了整个 Cluster Metadata,其中包括 chunk 信息。
  • Route Server: mongos 实例,前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

一般每个分片由奇数个服务器组成(3,5,7,…), 一个或多个分片组成分片集群

本次以三台服务器组成一个分片为例进行安装:
三台服务器ip配置如下
172.16.17.130
172.16.17.131
172.16.17.132

1.创建用户及数据日志目录

根单机模式一样我们先创建数据存储目录,分别在三台机器上创建mongodb用户及下列目录
172.16.17.130:
/data/mongodb/shard10
/data/mongodb/shard10.log
/data/mongodb/config
/data/mongodb/config.log

172.16.17.131:
/data/mongodb/shard11
/data/mongodb/shard11.log
/data/mongodb/config
/data/mongodb/config.log

172.16.17.132:
/data/mongodb/shard12
/data/mongodb/shard12.log
/data/mongodb/config
/data/mongodb/config.log

2.创建备份集

172.16.17.130:
执行以下shell命令创建副本,并将副本加入到shard1副本集中
bin/mongod –shardsvr –replSet shard1 –port 27017 –dbpath /data/mongodb/shard10 –logpath /data/mongodb/shard10.log –logappend –fork

172.16.17.131:
执行以下shell命令创建副本,并将副本加入到shard1副本集中
bin/mongod –shardsvr –replSet shard1 –port 27017 –dbpath /data/mongodb/shard11 –logpath /data/mongodb/shard11.log –logappend –fork

172.16.17.132:
执行以下shell命令创建副本,并将副本加入到shard1副本集中
bin/mongod –shardsvr –replSet shard1 –port 27017 –dbpath /data/mongodb/shard12 –logpath /data/mongodb/shard12.log –logappend –fork

还要对副本集进行初始化
登录到172.16.17.130,执行以下命令执行初始化
bin/mongo –port 27017 //登录到mongodb
>config = {_id:’shard1′,members:[{_id:0,host:’172.16.17.130:27017′},{_id:1,host:’172.16.17.131:27017′},{_id:2,host:’172.16.17.132:27017′}]}
>rs.initiate(config);
>rs.status(); //查看状态

3.配置Config Server

分别在三台机器上执行以下命令配置Config Server
bin/mongod –configsvr –dbpath /data/mongodb/config –port 20000 –logpath /data/mongodb/config.log –logappend –fork

4.配置Mongos

分别在三台机器上执行以下命令配置Mongos
bin/mongos –configdb 172.16.17.130:20000,172.16.17.131:20000,172.16.17.132:20000 –port 30000 –chunkSize 64 –logpath /data/mongodb/mongos.log –logappend –fork

5.配置分片集群

连接到mongos
bin/mongo 172.16.17.130:30000/admin
添加分片集群

>db.runCommand({addshard:"shard1/172.16.17.130:27017,172.16.17.131:27017,172.16.17.132:27017",name:"s1",maxsize:10240});

如果有多个分片,就要分别添加到分片集群中

列表分片
>db.runCommand( { listshards : 1 }

6.数据库跨片

默认一个数据库存放在一个分片中,想要让数据库跨片存储需要对数据库进行激活
>db.runCommand({enablesharding : “”});

对数据库进行分片之后,一个collection只会在一个分片中, 想要让一个collection存放到不同的分片中还得对collection进行设置
> db.runCommand( { shardcollection : “”,key : });

本文出自 肥蕉博客@IT技术,热门话题,生活随笔,美图欣赏,转载时请注明出处及相应链接。

本文永久链接: http://www.bananawolf.com/html/2013/04/935.html

一条评论

  1. 一生有我学习网 四月 14, 2013 11:10 上午 回复

    有用,收藏,下次再来!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

Ɣ回顶部