上篇咱们遗留了几个问题

1主节点是否能自己主动切换连接?

眼下须要手动切换

2主节点读写压力过大怎样解决

3从节点每一个上面的数据都是对数据库全量拷贝,从节点压力会不会过大

4数据压力达到机器支撑不了时候是否能自己主动扩展?

Nosql的产生是为了解决大数据量。高扩展,高性能,灵活数据模型。高可用性。可是光通过主从模型的架构是远远达不到上面几点的。因此。mongodb设计了副本集和分片的功能。咱们以下就来说说副本集

mongodb官方已经不建议使用主从模式,而是副本集进行取代。

IMPORTANT

Replica sets replace master-slave replication
for most use cases. If possible, use replicasets rather than master-slave replication for all new production deployments.This documentation remains to support legacy deployments and for archivalpurposes only.

来自 <http://docs.mongodb.org/master/core/master-slave/>

什么是副本集

副本集合(ReplicaSets)。是一个基于主/从复制机制的复制功能。但添加了自己主动故障转移和恢复特性。一个集群最多能够支持7个server。而且随意节点都能够是主节点。

全部的写操作都被分发到主节点。而读操作能够在不论什么节点上进行。

从图中能够发现,client连接到整个副本集,不关系详细哪一台server是否宕机。主server负责整个副本集的读写。

副本集定期同步数据。一旦主节点挂了。副本节点就会选举一个新主机作为主节点。

坏掉的节点修好后会自己主动扩充为副本节点。

怎样配置副本集

在一台机器上创建三个文件用户存放三台数据库,之后分别配置三台数据库,使他们的replset(复制集分别形成闭环)配置启动数据库。

配置启动參数

启动配置文件

mongoA.bat
mongod --configa.conf
mongoB.bat
mongod --configb.conf
mongodbC.bat
Mongod--config c.conf

登录数据库

ashell.bat
mongo 127.0.0.1:9000
b.shell.bat
mongo 127.0.0.1:9001
c.shell.bat
mongo 127.0.0.1:9002

初始化副本集

在三台机器上随意登陆一台机器输入例如以下命名回车

use admin
db.runCommand({"replSetInitiate":{
"_id":'child',
"members":[
{"_id":1,"host":"127.0.0.1:9000"},
{"_id":2,"host":"127.0.0.1:9001"},
{"_id":3,"host":"127.0.0.1:9002",},
]
}
})

查看集群状态

child:SECONDARY> rs.status()
{
"set" : "child",
"date" : ISODate("2015-08-16T07:43:36Z"),
"myState" : 2,
"syncingTo" : "127.0.0.1:9002",
"members" : [
{
"_id" : 1,
"name" : "127.0.0.1:9000",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 182,
"optime" : Timestamp(1439170908, 1),
"optimeDate" : ISODate("2015-08-10T01:41:48Z"),
"infoMessage" : "syncing to: 127.0.0.1:9002",
"self" : true
},
{
"_id" : 2,
"name" : "127.0.0.1:9001",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 7,
"optime" : Timestamp(1439170908, 1),
"optimeDate" : ISODate("2015-08-10T01:41:48Z"),
"lastHeartbeat" : ISODate("2015-08-16T07:43:36Z"),
"lastHeartbeatRecv" : ISODate("2015-08-16T07:43:35Z"),
"pingMs" : 2,
"lastHeartbeatMessage" : "syncing to: 127.0.0.1:9002",
"syncingTo" : "127.0.0.1:9002"
},
{
"_id" : 3,
"name" : "127.0.0.1:9002",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 8,
"optime" : Timestamp(1439170908, 1),
"optimeDate" : ISODate("2015-08-10T01:41:48Z"),
"lastHeartbeat" : ISODate("2015-08-16T07:43:35Z"),
"lastHeartbeatRecv" : ISODate("2015-08-16T07:43:36Z"),
"pingMs" : 772,
"electionTime" : Timestamp(1439711010, 1),
"electionDate" : ISODate("2015-08-16T07:43:30Z")
}
],
"ok" : 1 }

整个部分创建成功

副本集数据库測试

启动三个数据库查看仅仅有一个活跃节点其它为副本节点

停掉活跃点,我们查看活跃点

child:PRIMARY>show dbs

2015-08-16T15:51:21.667+0800Socket recv() errno:10053你的主机中的软件中止了一

个已建立的连接。127.0.0.1:9002

2015-08-16T15:51:21.669+0800SocketException: remote: 127.0.0.1:9002 error: 9001

再次连接数据库发现 活跃点已转移到
9000port

再将9002数据库开启

查看状态 9002数据库为备份点

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

以上说明我们的副本集已经搭建完毕

小结:

副本集解攻克了我们的故障转义功能。可是我们还是有一些问题 。从节点每一个上面的数据都是对数据库全量拷贝。从节点压力会不会过大?

数据压力大到机器支撑不了的时候是否能做到自己主动扩展?

Mongodb集群之副本集的更多相关文章

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

    搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集 ...

  2. MongoDB集群搭建-副本集

    MongoDB集群搭建-副本集 概念性的知识,可以参考本人博客地址: 一.Master-Slave方案: 主从: 二.Replica Set方案: 副本集: 步骤:(只要按步骤操作,100%成功) 1 ...

  3. centos7下安装部署mongodb集群(副本集模式)

    环境需求:Mongodb集群有三种模式:  Replica Set, Sharding,Master-Slaver.  这里部署的是Replica Set模式. 测试环境: 这里副本集(Replica ...

  4. mongodb集群配置副本集

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

  5. MongoDB健壮集群——用副本集做分片

    1.    MongoDB分片+副本集 健壮的集群方案 多个配置服务器 多个mongos服务器  每个片都是副本集 正确设置w 架构图 说明: 1.   此实验环境在一台机器上通过不同port和dbp ...

  6. MongoDB学习笔记~Mongo集群和副本集

    回到目录 一些概念 对于Mongo在数据容灾上,推荐的模式是使用副本集模式,它有一个对外的主服务器Primary,还有N个副本服务器Secondary(N>=1,当N=1时,需要有一台仲裁服务器 ...

  7. MongoDB集群-主从复制(副本集)、failover

    1.概念 主从复制的目的:数据冗余.备份.读写分离 主从方式:一主一从(不推荐,只能实现复制,主节点挂掉且未重新启动的时候,无法提升从节点为master),一主一从一裁判,一主多从 复制方式:主节点记 ...

  8. mongodb集群配置分片集群

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

  9. MongoDB 带访问控制的副本集部署

    当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成. 版本及环境 MongoDB4.4  Centos6.5  一. 下载安装 MongoDB Server 及 ...

随机推荐

  1. Git学习总结(8)——Git和SVN之间的基本区别

    GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征.所以,这篇文章的主要目的就是 ...

  2. 洛谷 P1518 两只塔姆沃斯牛 The Tamworth Two

    P1518 两只塔姆沃斯牛 The Tamworth Two 题目背景 题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和John). 追击在1 ...

  3. Java String内存释放

    Java String内存释放 这是一个坑,Java对于String对象,不进行内存的回收: 处理大数据量的时候,少用String. 与JDK有关系:jdk1.6环境下,内存只占用10M,jdk1.8 ...

  4. Android.mk添加本地程序和库的经常使用模版

    Android.mk添加本地程序和库的经常使用模版 Android中添加本地程序或者库.这些程序和库与其所在路径没有关系.仅仅与它们的配置文件Android.mk有关.Android.mk文件里可以主 ...

  5. HDUOj 看病要排队 优先队列的使用 题目1873

    STL优先队列的具体描写叙述 http://blog.csdn.net/yueloveme/article/details/47106639 题目地址:http://acm.hdu.edu.cn/s ...

  6. Java5新特性之枚举

    1.  概念 首先,枚举并非一种新技术,而是一种基础数据类型.它隶属于两种基础类型中的值类型,例如以下: 2.  为什么要有枚举 枚举在真正的开发中是非经常常使用的,它的作用非常easy也非常纯粹:它 ...

  7. perl getopt 用法

    我们在linux经常常使用到一个程序须要增加參数,如今了解一下perl中的有关控制參数的函数.getopt.在linux有的參数有二种形式.一种是--help,还有一种是-h.也就是-和--的分别.- ...

  8. 本书已出版&lt;拨云见日:基于android的内核与系统架构源代码分析 &gt;

    已陆续倒到各大电商站点及新华书店 http://item.jd.com/11594135.html http://product.china-pub.com/4472138 http://www.am ...

  9. linux下面增加磁盘空间

    1.先看看情况 [root@localhost tmp]# fdisk -l Disk /dev/sda: 3221 MB, 3221225472 bytes 255 heads, 63 sector ...

  10. DB-MySQL:目录

    ylbtech-DB-MySQL:目录 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http://ylbt ...