MongoDB sharding cluster Step by Step

本篇讲述MongoDB的 Sharding Cluster 的详细步骤,按着做理论上不会有什么错误。

关于说着里边的参数、变量、和设置,没有用到很多,只用到了关键的一些,其他的可以参考MongoDB的官方文档。

后者自己google,baidu,这里不想多讲。同样废话不多说,直接上菜。

哦,对了Sharding Cluster里边一定要弄明白的三个概念, DataNode, ConfigServer, Router。如图:

好了, 配置正式开始:

1, 配置Shard Data Node, 即我们刚才说的 Replica Set

1)自己编写 mongo_sharding_dataNode_1.conf

文件的内容:

bind_ip=localhost
port=27022
dbpath=D:\MongoDB\data\dbnode1
logpath=D:\MongoDB\log\node1.log
logappend=true
replSet=testsh1
shardsvr=true

2)同样的文件,改掉bind_ip,port,dbpath,logpath的值,做成mongo_sharding_dataNode_2.conf

这样存数据的两个库就有个一个primary,一个secondary。

3)在Replica Set中还要有一个arbitrary,所以接着编写第三个文件:mongo_sharding_dataNode_arbit.conf

内容同上,只是bind_ip,port,dbpath,logpath不一样而已。

上边的配置项,和参数有不清楚的,或者想加入更多参数的,最好使用 mongod -h 去查看一下, 里边解释的很清楚。

4)三个文件编号之后使用 mongod.exe -f  mongo_sharding_dataNode_2.conf 启动三个mongod

例如,我的是:

D:\MongoDB\Server\3.2\bin>
D:\MongoDB\Server\3.2\bin>mongod.exe -f ..\conf\mongo_sharding_dataNode_1.conf

5)三个Server(三个mongod)都启起来之后,把这个三个server配置成一个 Replica Set 即让他们成为我们的一个shard data node.

随便登录进这个三个server中的一个, 比如我登录的是27022,

mongo.exe localhost:27022

use admin

cfg = {_id:‘testsh1‘,members:[{_id:0,host:‘localhost:27022‘,priority:2},{_id:1,host:‘localhost:27023‘,priority:1},{_id:2,host:‘localhost:27024‘,arbiterOnly:true}]}
rs.initiate(cfg)

通过以上命令,把这三个server配置成一个Replica Set, 即一个Shard Data Node,

现在我们就已经有个了一个 Shard Data Node 了。

如果中间出了错误, 不要害怕,先可以找找有没有补救的办法,比如rs.remove("localhist:27023")    rs.reconfig(cfg)等等,这样可以学习的耕读。

最不怕的就是毁掉重来嘛, 不过这么弄自己练习可以, 公司环境或生产环境,要千万千万万万万万小心的!!

2,配置ConfigServer

1)自己编写 conf 文件 mongo_configserver_1.conf 内容:

bind_ip=localhost
port=27019
dbpath=D:\MongoDB\data\confserver1
logpath=D:\MongoDB\log\confserver1.log
logappend=true
configsvr=true

注意这里的 configsvr=true.

同样的方式编写另外两个或多个 conf 文件。

2)启动 Config Server

mongod.exe -f mongo_configserver_1.conf

例如,我的启动方式:

D:\MongoDB\Server\3.2\bin>
D:\MongoDB\Server\3.2\bin>mongod.exe -f ..\conf\mongo_configserver_2.conf

现在 Config Server 有了, Shard DataNode 有了,该有的准备都有了。

我们最终的要角色: mongos Router 该上场了。

3,配置Mongos

同样,我们编写mongos的配置文件mongos.conf

bind_ip=localhost
port=27030
#dbpath=D:\MongoDB\data\db  ####### 注意一下,它不需要dbpath, 可以查看 mongos -h 查看mongos的参数列表
logpath=D:\MongoDB\log\mongos.log
logappend=true
configdb=localhost:27019,localhost:27020,localhost:27021    ####看一下这个三个ip:port用逗号分隔,这是三个 ConfigServer的地址。

好了全部的静态,需要写到文件里的配置都配置完了, 启动 mongos

mongos.exe -f mongos.conf

例如,我的启动是:

D:\MongoDB\Server\3.2\bin>
D:\MongoDB\Server\3.2\bin>mongos.exe -f ..\conf\mongos.conf

如果启动mongos没错的话,你应该能进入mongos

使用命令:mongo.exe localhost:27030  进入mongos,

进入mongos 后的提示应该是: mongos> 这样子的, 如图:

4,配置 Sharding

1)加入shard

使用命令:mongos> sh.addShard("testsh1/localhost:27022")

还记得前边那个testsh1吧, testsh1表示Replica Set的名字,当把主节点添加到shard以后,会自动找到set里的主,备,决策节点。

所以上边的命令就是:把testsh1这个Replica Set中的主节点加入到Shard中,让shard自己找备节点和决策节点。

可以使用命令:mongos> db.runCommand({listshards:1}); 来看一下添加的shards, 运行结果应该类似:

mongos>
mongos> db.runCommand({listshards:1});
{
"shards" : [
{
"_id" : "testsh1",
"host" : "testsh1/localhost:27022,localhost:27024"
}
],
"ok" : 1
}
mongos>
mongos>

2)激活数据库分片,使用命令:

mongos>
mongos>
mongos> db.runCommand({enablesharding:"test-db"});
{ "ok" : 1 }
mongos>

激活 test-db 的数据库分片。

通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard。

一旦激活数据库分片,数据库中不同的collection将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对collection作些操作。

3)激活collection分片,如图说的清楚,明白:

使用命令:mongos> db.runCommand({shardcollection:‘test-db.usertest‘,key:{_id:1}});

表示激活test-db这个数据库的中 usertest 表的分片,使用 key是有索引的_id 这个列。

设置完了,可以切换到 test-db下,看看usertest表的状态。

使用命令:

use test-db;

db.usertest.stats()

由于内容太多,不在这里列出了。

文章到这里所有的配置已经结果, 这个Mongo Shard Cluster 已经配置完成了,

可以使用 mongos 来进行, 操作了。 比如添加,删除,查看等等。

mongos> user test-db;

mongos> db.usertest.save({name:‘xiaobing‘});

mongos> db.usertest.find();

等等一系列的操作。

ok, let‘s call it a day.

没完没了了,你还。

哈哈, 我很想知道如果那个mongos挂了怎么办?嗯,下图给了一个解决方案, 为了防止单点故障,一个mongos挂了怎么办?

看图, 不多说了:

知道怎么弄了吧, 这样应该没有单点故障了吧,完美,perfect。嘿嘿,嘿嘿

时间: 2024-10-12 08:05:26

MongoDB sharding cluster Step by Step的相关文章

MongoDB Sharding Cluster分片集群

MongoDB Sharding Cluster 第1章 分片技术简述: sharding是MongoDB用来将大型集合分割高不同服务器上所采用的方法,尽管分片起源于关系型数据库分区,但MongoDB分片完全又是另一回事 和mysql分区方案相比,MongoDB的最大区别在于它几乎能自动完成所有事情,只要告诉MongoDB要分配数据,它就能自动维护数据在不同的服务器之间的均衡 1.1 分片的目的: ?  垂直扩展:增加更多的cpu和存储资源来扩展容量,也属于硬件扩展 ?  水平扩展:将数据集分布

MongoDB Sharding Cluster

第1章 分片技术简述: sharding是MongoDB用来将大型集合分割高不同服务器上所采用的方法,尽管分片起源于关系型数据库分区,但MongoDB分片完全又是另一回事 和mysql分区方案相比,MongoDB的最大区别在于它几乎能自动完成所有事情,只要告诉MongoDB要分配数据,它就能自动维护数据在不同的服务器之间的均衡 1.1 分片的目的: ?  垂直扩展:增加更多的cpu和存储资源来扩展容量,也属于硬件扩展 ?  水平扩展:将数据集分布在多个服务器上,水平扩展即分片 1.2 分片设计思

【MangoDB分片】配置mongodb分片群集(sharding cluster)

配置mongodb分片群集(sharding cluster) Sharding cluster介绍 这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monodb系统. 要构建一个 MongoDB Sharding Cluster,需要三种角色: Shard Server: mongod 实例,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障 Config Server: m

第五部分 架构篇 第二十一章 MongoDB Sharding 架构(实践)

这是一种将海量的数据水平扩展的数据库集群系统,数据分别存储在sharding的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB集群. MongoDB的数据分块成为chunk,每个chunk都是Collection中一段连续的数据记录,通常最大尺寸是200MB,超出则生成新的数据块. 要构建一个MongoDB Sharding Cluster需要以下三个角色: Shard Server 即存储实际数据的分片,每个Shard可以使一个mongod实例,也可以使一组mongo

数据库设计 Step by Step (1)——扬帆启航

引言:一直在从事数据库开发和设计工作,也看了一些书籍,算是略有心得.很久之前就想针 对关系数据库设计进行整理.总结,但因为种种原因迟迟没有动手,主要还是惰性使然.今天也算是痛下决心开始这项卓绝又令我兴奋的工作.这将是一个系列的文 章,我将以讲座式的口吻展开讨论(个人偷懒,这里的总结直接拿去公司培训新人用). 系列的第一讲我们先来回答下面几个问题 数据库是大楼的根基 大多数程序员都很急切,在了解基本需求之后希望很快的进入到编码阶段(可能只有产出代码才能反映工作量),对于数据库设计思考得比较少. 这

Mongodb Sharding 分片

Mongodb Sharding 介绍 Sharding in MongoDB 分片组建: Shards(建议用Replica).Query Routers.Config Servers. Shards store the data. To provide high availability and dataconsistency, in a production sharded cluster, each shard is a replica set [1].For more informat

mongodb sharding

mongod --port 10001 --logpath cluster/log/shard1.log --logappend --shardsvr -dbpath cluster/data/shard1 --directoryperdb --rest mongod --port 10002 --logpath cluster/log/shard2.log --logappend --shardsvr -dbpath cluster/data/shard2 --directoryperdb -

Step by Step Guide: How to Configure SSL/TLS on ORACLE RAC (with SCAN) (Doc ID 1448841.1)

In this Document   Goal   Solution   References Applies to: Advanced Networking Option - Version 11.2.0.2 to 12.2.0.1 [Release 11.2 to 12.2]Oracle Net Services - Version 12.2.1.2.0 to 12.2.1.2.0 [Release 12.2]Information in this document applies to a

57-4 数据库分片概念及mongodb sharding的实现

04 数据库分片的概念及mongodb sharding的实现 配置环境: node1: 192.168.1.121 CentOS release 6.7 node2: 192.168.1.122 CentOS release 6.7 node3: 192.168.1.123 CentOS release 6.7 [[email protected] ~]# vim /etc/hosts 添加 192.168.1.121   node1 192.168.1.122   node2 192.168