Centos6.5搭建mongodb分片

https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.7.tgz

是我使用的版本

1、准备3个实例:

10.0.0.13

10.0.0.18

10.0.0.19

2、规划5个组件对应的端口号,由于一个机器需要同时部署 mongos、config server 、shard1、shard2、shard3,所以需要用端口进行区分。

这个端口可以自由定义,在本文 mongos为 3717, config server 为 3710, shard1为 3711 , shard2为3712, shard3为3713

3、在每一台服务器分别启动配置服务器。

/opt/mongodb-cluster/bin/mongod --configsvr --dbpath /opt/mongodb-cluster/config/data --port 3710 --logpath /opt/mongodb-cluster/config/var/config.log --fork

4、在每一台服务器分别启动mongos服务器。

/opt/mongodb-cluster/bin/mongos  --configdb 10.0.0.13:3710,10.0.0.18:3710,10.0.0.19:3710  --port 3717 --logpath  /opt/mongodb-cluster/mongos/var/mongos.log --fork

5、配置各个分片的副本集。

#在每个机器里分别设置分片1服务器及副本集shard1

/opt/mongodb-cluster/bin/mongod --shardsvr --replSet shard1 --port 3711 --dbpath /opt/mongodb-cluster/shard1/data  --logpath /opt/mongodb-cluster/shard1/var/shard1.log --fork

#在每个机器里分别设置分片2服务器及副本集shard2

/opt/mongodb-cluster/bin/mongod --shardsvr --replSet shard2 --port 3712 --dbpath /opt/mongodb-cluster/shard2/data  --logpath /opt/mongodb-cluster/shard2/var/shard2.log --fork

#在每个机器里分别设置分片3服务器及副本集shard3

/opt/mongodb-cluster/bin/mongod --shardsvr --replSet shard3 --port 3713 --dbpath /opt/mongodb-cluster/shard3/data  --logpath /opt/mongodb-cluster/shard3/var/shard3.log --fork

#设置第一个分片副本集

/opt/mongodb-cluster/bin/mongo  127.0.0.1:3711

#使用admin数据库

use admin

#定义副本集配置

config = { _id:"shard1", members:[

{_id:0,host:"10.0.0.13:3711"},

{_id:1,host:"10.0.0.18:3711"},

{_id:2,host:"10.0.0.19:3711",arbiterOnly:true }

]

}

#初始化副本集配置

rs.initiate(config);

#设置第二个分片副本集

/opt/mongodb-cluster/bin/mongo  127.0.0.1:3712

#使用admin数据库

use admin

#定义副本集配置

config = { _id:"shard2", members:[

{_id:0,host:"10.0.0.13:3712",arbiterOnly:true },

{_id:1,host:"10.0.0.18:3712"},

{_id:2,host:"10.0.0.19:3712"}

]

}

#初始化副本集配置

rs.initiate(config);

#设置第三个分片副本集

/opt/mongodb-cluster/bin/mongo    127.0.0.1:3713

#使用admin数据库

use admin

#定义副本集配置

config = { _id:"shard3", members:[

{_id:0,host:"10.0.0.13:3713"},

{_id:1,host:"10.0.0.18:3713",arbiterOnly:true },

{_id:2,host:"10.0.0.19:3713"}

]

}

#初始化副本集配置

rs.initiate(config);

6、目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到 mongos 路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。

#连接到mongos

/opt/mongodb-cluster/bin/mongo  127.0.0.1:3717

#使用admin数据库

user  admin

#串联路由服务器与分配副本集1

db.runCommand( { addshard : "shard1/10.0.0.13:3711,10.0.0.18:3711,10.0.0.19:3711"});

如里shard是单台服务器,用 db.runCommand( { addshard : “[: ]” } )这样的命令加入,如果shard是副本集,用db.runCommand( { addshard : “replicaSetName/[:port][,serverhostname2[:port],…]” });这样的格式表示 。

#串联路由服务器与分配副本集2

db.runCommand( { addshard : "shard2/10.0.0.13:3712,10.0.0.18:3712,10.0.0.19:3712"});

#串联路由服务器与分配副本集3

db.runCommand( { addshard : "shard3/10.0.0.13:3713,10.0.0.18:3713,10.0.0.19:3713"});

#查看分片服务器的配置

db.runCommand( { listshards : 1 } );

7、目前配置服务、路由服务、分片服务、副本集服务都已经串联起来了,但我们的目的是希望插入数据,数据能够自动分片,就差那么一点点,一点点。。。连接在mongos上,准备让指定的数据库、指定的集合分片生效。

#指定testdb分片生效

db.runCommand( { enablesharding :"testdb"});

#指定数据库里需要分片的集合和片键

db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )

  • 我们设置testdb的 table1 表需要分片,根据 id 自动分片到 shard1 ,shard2,shard3 上面去。要这样设置是因为不是所有mongodb 的数据库和表都需要分片!

8、测试分片配置结果。

#连接mongos服务器

/opt/mongodb-cluster/bin/mongo  127.0.0.1:3717

#使用testdb

use  testdb;

#插入测试数据

for (var i = 1; i <= 100000; i++)

db.table1.save({id:i,"test1":"testval1"});

#查看分片情况如下,部分无关信息省掉了

db.table1.stats();

下面是我自己为了方便,写的启动管理脚本,附在后面。

[[email protected] sbin]# ll
total 28
drwxr-xr-x 2 root   root   4096 Jul  4 15:35 bak
-rwxrwxr-x 1 mongod mongod 3945 May 20 18:51 config
-rwxrwxr-x 1 mongod mongod 3945 May 20 18:51 mongos
-rwxrwxr-x 1 mongod mongod 1181 May 20 19:04 node_mongo
-rwxrwxr-x 1 mongod mongod 3945 May 20 18:51 shard1
-rwxrwxr-x 1 mongod mongod 3945 May 20 18:51 shard2
-rwxrwxr-x 1 mongod mongod 3945 May 20 18:51 shard3
[[email protected] sbin]# pwd
/opt/mongodb-cluster/sbin
[[email protected] sbin]#

附件是节点的安装配置文件:http://down.51cto.com/data/2226910

时间: 2024-12-31 03:54:24

Centos6.5搭建mongodb分片的相关文章

搭建mongodb分片

搭建mongodb分片 http://gong1208.iteye.com/blog/1622078 Sharding分片概念 这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在sharding的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB集群. MongoDB 的数据分块称为 chunk.每个 chunk 都是 Collection 中一段连续的数据记录,通常最大尺寸是 200MB,超出则生成新的数据块. 要构建一个 MongoDB Sharding C

在 Azure 虚拟机上快速搭建 MongoDB 集群

MongoDB 是目前在 NoSQL 市场上非常受欢迎的一个数据库,本文介绍如何使用 Azure PowerShell 和 Azure CLI 在 Azure 虚拟机上搭建单节点 MongoDB(测试使用)和包含主从复制以及分片集群的多节点 MongoDB(生产环境使用). 准备步骤 如果你选择 Azure PowerShell 方式搭建 MongoDB,那么请按如何安装和配置 Azure PowerShell中的说明在本地计算机上安装 Azure PowerShell.然后打开 Azure P

MongoDB 分片集群实战

背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁盘,此种方法虽然成本很高,但是实现比较简单,维护起来也比较方便. 水平扩展:通过使用更多配置一般的服务器来共同承担工作负载,此种方法很灵活,可以根据工作负载的大小动态增减服务器的数量,但是实现比较复杂,得有专门的人员来运维. Databases for MongoDB 试用 IBM Cloud 上提

搭建mongodb集群(副本集+分片)

完整的搭建mongodb集群(副本集+分片)的例子... 准备四台机器,分别是bluejoe1,bluejoe2,bluejoe3,以及bluejoe0 副本集及分片策略确定如下: 将创建3个副本集,命名为shard1,shard2,shard3: 以上3个副本集作为3个分片: 每个副本集包含2个副本(主.辅): 副本分开存储,即shard1存在bluejoe1和bluejoe2上各一份...以此类推 将创建3个配置库实例,一台机器一个 bluejoe0上配置一个mongos(mongos一般可

【MongoDB】在windows平台下搭建mongodb的分片集群(二)

在上一片博客中我们讲了Mongodb数据库中分片集群的主要原理.在本篇博客中我们主要讲描述分片集群的搭建过程.配置分片集群主要有两个步骤,第一启动所有需要的mongod和mongos进程.第二步就是启动一个mongos与集群通信.下面我们一步步来描述集群的搭建过程. 图1-1  MongoDB分片集群中的组件 图 1-2 由实例分片集群构成的进程全貌 备注:以上两者图片均引自于Kyle Banker著 丁雪丰译<MongoDB 实战> 2.1 创建分片目录 备注:此处于创建复制集类似,详细请查

【MongoDB】在window系统下搭建MongoDB的分片系统(一)

这篇主要讲述分片集群的主要原理 坦白说,刚看到这个分片系统(Sharding)有点蒙,感觉有点太高大上了.看美国作家Kyle Banker<Mongodb in action>没有明白.又查询资料,首先对与分片的做个说明.从其他书本上看的,说分片这是一种将海量数据水平扩展的数据库集群系统,数据分表存储在sharding的各个节点上,使用者通过简单的配置就可以很方便地够将一个分布式MongoDB集群. 一.角色说明 要构建一个MongoDB分片集群,需要三个角色: shard server  即

MongoDB 分片的原理、搭建、应用

一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分.通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器).大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差(+++里面的说明+++),查询则尽量避免跨分片查询.使用分片的时机: 1,机器的磁盘不够用了.

MongoDB 分片的原理、搭建、应用 !

一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移).通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器).大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差(+++里面的说明+++),查询则尽量避免跨

MongoDB 分片搭建

MongoDB 已经到了第三篇,同时也是搭建的最后一篇文章了. MongoDB 的分片搭建. 为什么使用分片? 我们为什么要使用分片呢? 因为现在的数据量越来越大了,为了扩大DB 的性能 以及吞吐量. MongoDB 分片构架 A MongoDB sharded cluster consists of the following components: shard: Each shard contains a subset of the sharded data. Each shard can