MongoDB之Replica Set+Sharding架构的例子

MongoDb Replica Set解决了容错和单点故障问题,但单台机器的存储和承受能力有限,Sharding就是为了海量存储和动态扩容而产生的。这才有了Replica Set+Sharding高可用架构。
Sharding Cluster主要包括如下三部分:

Shards:每个shard都是replica set,具有自动备份、容错、恢复能力,当然在开发环境你可配成单个mongod
Config Server:存储metadata,包括每个shard的基本信息和chunk信息,生产环境至少有3个config server
Mongos:集群的入口,客户端与之交互,复杂把请求转发到对应的shard上。

搭建MongoDB Replica Set+Sharding环境:

拓扑图:

 

说明:由于本地测试,部署将在一台机器完成,并且mongos和config server都只用了一个实例。
配置:

副本集rep1配置:

#master.conf配置

dbpath=/data/mongo_cluster/master

logpath=/data/mongo_cluster/master/logs/master.log

pidfilepath=/data/mongo_cluster/master/master.pid

logappend=true          

replSet=rep1

bind_ip=192.168.15.130

port=10000

fork=true

journal=true

shardsvr=true

 

#slave.conf配置

dbpath=/data/mongo_cluster/slave

logpath=/data/mongo_cluster/slave/logs/slave.log

pidfilepath=/data/mongo_cluster/slave/slave.pid

logappend=true

replSet=rep1

bind_ip=192.168.15.130

port=10001

fork=true

journal=true

shardsvr=true

 

#arbiter.conf配置

dbpath=/data/mongo_cluster/arbiter

logpath=/data/mongo_cluster/arbiter/logs/arbiter.log

pidfilepath=/data/mongo_cluster/arbiter/arbiter.pid

logappend=true

replSet=rep1

bind_ip=192.168.15.130

port=10002

fork=true

journal=true

shardsvr=true

副本集rep2配置:

#master.conf配置

dbpath=/data/mongo_cluster2/master

logpath=/data/mongo_cluster2/master/logs/master.log

pidfilepath=/data/mongo_cluster2/master/master.pid

logappend=true          

replSet=rep2

bind_ip=192.168.15.130

port=10004

fork=true

journal=true

shardsvr=true

 

#slave.conf配置

dbpath=/data/mongo_cluster2/slave

logpath=/data/mongo_cluster2/slave/logs/slave.log

pidfilepath=/data/mongo_cluster2/slave/slave.pid

logappend=true

replSet=rep2

bind_ip=192.168.15.130

port=10005

fork=true

journal=true

shardsvr=true

 

#arbiter.conf配置

dbpath=/data/mongo_cluster2/arbiter

logpath=/data/mongo_cluster2/arbiter/logs/arbiter.log

pidfilepath=/data/mongo_cluster2/arbiter/arbiter.pid

logappend=true

replSet=rep2

bind_ip=192.168.15.130

port=10006

fork=true

journal=true

shardsvr=true

配置Replica Set主、备、仲裁节点:(点击查看)

config server配置:

#config server配置configsvr.conf
dbpath=/data/mongo_config_server
logpath=/data/mongo_config_server/logs/configsvr.log
pidfilepath=/data/mongo_config_server/configsvr.pid
logappend=true          
bind_ip=192.168.15.130
port=10007
fork=true
journal=true
configsvr=true
mongos配置:
#mongos配置 mongos.conf
logpath=/data/mongos/logs/mongos.log
pidfilepath=/data/mongos/mongos.pid
logappend=true          
bind_ip=192.168.15.130
port=10008
fork=true
configdb=192.168.15.130:10007

启动:

#启动shard

/usr/local/mongodb3.0.5/bin/mongod -f /data/mongo_cluster/master/master.conf

/usr/local/mongodb3.0.5/bin/mongod -f /data/mongo_cluster/slave/slave.conf

/usr/local/mongodb3.0.5/bin/mongod -f /data/mongo_cluster/arbiter/arbiter.conf

 

/usr/local/mongodb3.0.5/bin/mongod -f /data/mongo_cluster2/master/master.conf

/usr/local/mongodb3.0.5/bin/mongod -f /data/mongo_cluster2/slave/slave.conf

/usr/local/mongodb3.0.5/bin/mongod -f /data/mongo_cluster2/arbiter/arbiter.conf

 

#启动config server

/usr/local/mongodb3.0.5/bin/mongod -f /data/mongo_config_server/configsvr.conf 

 

#启动mongos

/usr/local/mongodb3.0.5/bin/mongos -f /data/mongos/mongos.conf

配置mongos,设置分片规则:

(1)连接mongos与replica set

#进入mongos

/usr/local/mongodb3.0.5/bin/mongo 192.168.15.130:10008

#连接mongos与replica set

mongos> db.runCommand( { addshard : "rep1/192.168.15.130:10001"});

{ "shardAdded" : "rep1", "ok" : 1 }

mongos> db.runCommand( { addshard : "rep2/192.168.15.130:10004"});

{ "shardAdded" : "rep2", "ok" : 1 }

#查看分片配置

mongos> db.runCommand( { listshards : 1 } );

(2)设置分片规则并测试

#指定testdb分片生效

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

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

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

 

#测试

> use  testdb; 

#插入测试数据

> for (var i = 1; i <= 1000; i++) db.table1.save({id:i,"test1":"testval1"});

#查看分片情况如下

> db.table1.stats();

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索配置
mongodb sharding、mongodb sharding集群、mongodb sharding key、mongodb sharding配置、mongodb 3.2 sharding,以便于您获取更多的相关知识。

时间: 2024-10-28 22:24:30

MongoDB之Replica Set+Sharding架构的例子的相关文章

MongoDB的Replica Sets+Sharding架构

Replica Sets+http://www.aliyun.com/zixun/aggregation/14273.html">Sharding架构如下: 1,shard服务器:使用Replica Sets确保每个数据节点都具有备份.自动容错转移.自动恢复的能力. 2,配置服务器:使用使用3个配置服务器确保元数据完整性 3,路由进程:使用3个路由进程实现平衡,提高客户端接入性能,架构如下 3个分片进程:shard11,shard12,shard13组成一个副本集,提供Sharding中s

文档-mongodb 做 Replica Sets + Sharding,2台物理服务器可以吗?

问题描述 mongodb 做 Replica Sets + Sharding,2台物理服务器可以吗? 看了mongodb 的文档以及网上的教程,对mongodb 做 Replica Sets + Sharding 都用到3台独立IP的服务器,service1 service2 service3 . 我只有2台,可以实现吗? 我的币只有5个,全给了.这是第一交提问,希望有知道的朋友帮个忙! 解决方案 不考虑性能的话,一台都够了,你可以开一些虚机.要多少IP有多少.

创建Oracle sharding database的例子

一.Oracle sharding database的一些概念 (1)Table family: 有相关关联关系的一组表,如客户表(customers),订单表(order),订单明细表(LineItems).这些表之间往往有外键约束关系,可以通过如下2中方式建立table family: (1.1)通过CONSTRAINT [FK_name] FOREIGN KEY (FK_column) REFERENCES [R_table_name]([R_table_column]) --这种关系可以

【Mongodb】如何创建mongodb的replica set

Replica sets 在主从复制上做的扩展,增加了故障自动切换和自动修复成员节点.下面从技术上介绍如何搭建mongodb的replica set (个人觉得,搭建mongodb本身没有多少干货,重要是如何灾难规划) 1 建立复制集群节点的数据存放目录 mkdir -p /opt/mongodata/r1 mkdir -p /opt/mongodata/r2 mkdir -p /opt/mongodata/r3 2 在三个窗口分别执行如下命令: ./mongod --dbpath /opt/m

mongodb数据库replica set shard 分片 高可用 集群

一,mongodb分片,常用的二种架构 1,每一个客户端系统上包含一个路由器mongos, 服务器的数量从十几台增长到几百台,mongos路由和mongod分片服务器之间建立了几百.有时候甚至是几千个连接,负载非常重.这意味着每当chunk平衡(MongoDB分片集群为了保持数据均匀分布所必须使用的平衡措施)发生的时候传送存储在配置数据库中的chunk位置信息都需要花费相当长的时间.这是因为每一个mongos路由都必须清楚地知道每一个chunk都存在于集群中的哪些位置. 2,路由器独立 路由独立

MongoDB · 特性分析 · Sharded cluster架构原理

为什么需要Sharded cluster? MongoDB目前3大核心优势:『灵活模式』+ 『高可用性』 + 『可扩展性』,通过json文档来实现灵活模式,通过复制集来保证高可用,通过Sharded cluster来保证可扩展性. 当MongoDB复制集遇到下面的业务场景时,你就需要考虑使用Sharded cluster 存储容量需求超出单机磁盘容量 活跃的数据集超出单机内存容量,导致很多请求都要从磁盘读取数据,影响性能 写IOPS超出单个MongoDB节点的写服务能力 如上图所示,Shardi

【Mongodb】 Replica set 的选举策略之一

首先介绍一下在replica set里分为三种节点类型: 1 primary   负责client的读写. 2 secondary 作为热备节点,应用Primary的oplog读取的操作日志,和primary保持一致,不提供读写操作!   secondary有两种类型:    1)normal secondary   随时和Primay保持同步,     2)delayed secondary  延时指定时间和primary保持同步,防止误操作.  3 arbiter.它不负责任何读写,只作为一

MongoDB:Replica Set 之操作日志 Oplog

转载地址:http://francs3.blog.163.com/blog/static/4057672720121133328120/  之前的blog  学习了 MongoDB 主从搭建,以及节点管理的内容,接下来学习 实现主从复制一个重要角色,即 Oplog.         MongoDB 的复制集是通过 Oplog 来实现的,主库的更改操作会被记录到主库的 Oplog 日志中,然后从库通过异步方式复制主库的 Oplog 文件并且将 Oplog 日志应用到从库,从而 实现了与主库的同步.

【Mongodb】 Replica set 的读写分离

在写多读少的应用中,使用Replica Sets来实现读写分离.通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作. 对于replica set 中的secondary 节点默认是不可读的, [mongodb@rac4 bin]$ mongo 127.0.0.1:28019 MongoDB shell version: 2.0.1 connecting to: 127.0.0.1:28019/test SECONDARY>  SECOND