mongodb复制集的实现

复制集(Replica Sets),是一个基于主/从复制机制的复制功能,进行同一数据的异步同步,从而使多台机器拥有同一数据的都多个副本,由于有自动故障转移和恢复特性,当主库宕机时不需要用户干预的情况下自动切换到其他备份服务器上做主库,一个集群最多可以支持7个服务器,并且任意节点都可以是主节点。所有的写操作都被分发到主节点,而读操作可以在任何节点上进行,实现读写分离,提高负载。

资源有限测试一个VM开3个实例:

环境:centos7.0

192.168.1.21:20011 P

192.168.1.21:20012 S

192.168.1.21:20013  A

mongodb verson:3.2

搭建过程:

1、下载包、并解压

2、添加相关的目录文件

[[email protected] mongodb27017]# ll

总用量 8

drwxr-xr-x. 2 root root 4096 12月 17 00:59 bin

drwxr-xr-x. 2 root root   30 12月 17 10:47 conf

drwxr-xr-x  4 root root 4096 12月 17 11:19 data

drwxr-xr-x. 2 root root   20 12月 17 01:13 key

drwxr-xr-x. 2 root root   23 12月 17 10:20 logs

#3个实例配置一样

3、解压包下bin目录下的所有文件到cp到当前的创建的bin目录下

4、3个实例的配置文件一致

[[email protected] conf]# cat mongodb27017.conf

port=20011#每个实例端口,根据实际来配置

dbpath=/export/mongodb27017/data #数据目录

logpath=/export/mongodb27017/logs/mongod.log #日志目录

fork=true

logappend=true

#keyFile=/export/mongodb27017/key/mongodb#后面介绍

nohttpinterface=true

replSet=mongodb ##复制集的名字,

5、启动3个实例:

/export/mongodb27018/bin/mongod -f /export/mongodb27018/conf/mongodb27018.conf

/export/mongodb27019/bin/mongod -f /export/mongodb27019/conf/mongodb27019.conf

/export/mongodb27017/bin/mongod -f /export/mongodb27017/conf/mongodb27017.conf

#需要把解压包bin目录下文件分别拷贝到这3个启动目录下,或者一个作为basedir也可以,其他分开

6、配置复制集

/export/mongodb27017/bin/mongo --port 20011#根据自己实际的定义,进入数据库

1、配置成员的关系:

config
= {_id:"mongodb",
members:[{_id:0,host:"192.168.1.21:20011", priority : 3}]}  
     (给了优先级为3,mongodb为复制集的名)

2、初始化:

>rs.initiate(config);

3、添加备节点、仲裁节点

rs.add("192.168.1.21:20012")       添加备节点

rs.addArb("192.168.1.21:20013")    添加仲裁节点

rs.status()#查看状态

rs.conf()#查看副本集成员及其优先级(看好成员的顺序,优先级从1-100,越大的优先级越高)

config=rs.conf()           进行优先级设置

config.members[0].priority = 3                 设置主节点优先级为3

config.members[1].priority = 2                 设置备节点优先级为2

config.members[2].priority =  1                设置仲裁节点优先级为1

rs.remove("ip:port")                            移除已经存在的成员

rs.reconfig(config)          保存配置,生效

7、设置备节点为slave

mongodb:SECONDARY> show dbs

2016-12-17T12:26:22.621+0800 E QUERY    [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } :

登陆到20012实例上执行:rs.slaveOk()

8、测试主节点宕机是否能够切换

总结:

mongoDB的主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性。而副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,并且解决了上面第一个问题“主节点挂掉了,整个集群内会自动切换”,如果节点挂了,它会重新选举新的主节点。对于普通的业务能够满足,但高并发的话,复制集是无法满足,就需要shard的,实现集群高可用,可以借助LVS或者其他。

时间: 2024-10-11 07:23:46

mongodb复制集的实现的相关文章

MongoDB复制集及数据分片详解

前言 MongoDB是一个由C++语言编写的基于分布式文件存储的数据库,是当前NoSQL数据库中比较热门的一种,旨在为Web应用提供可扩展的高性能数据存储解决方案.本文介绍MongoDB复制集及数据分片. MongoDB 简介 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.支持的数据结构非常松散,因此可以存储比较复杂的数据类型.最大的特点是其支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询

MongoDB复制集原理

版权声明:本文由孔德雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/136 来源:腾云阁 https://www.qcloud.com/community MongoDB的单实例模式下,一个mongod进程为一个实例,一个实例中包含若干db,每个db包含若干张表.MongoDB通过一张特殊的表local.oplog.rs存储oplog,该表的特点是:固定大小,满了会删除最旧记录插入新记录,而且只支持append操作,因

mongodb复制集配置步骤

mongodb复制集配置步骤 2012-11-09 14:10:24|  分类: mongodb|举报|字号 订阅 复制升级版的主从复制,它实现了故障自动转移功能,同时从节点支持读 一,节点类型: a)    主节点:支持读写 b)    从节点:支持读(需设置) c)    仲裁节点:参与投票同时也支持读(需设置) 二,实验 主节点:192.168.129.47 从节点:192.168.129.48 仲裁节点:192.168.129.49 1.主节点配置如下: vi  /etc/rc.loca

一步一步教你搭建基于docker的MongoDB复制集群环境

一步一步教你搭建基于docker的MongoDB复制集群环境 1.安装docker 2.创建MongoDB的Image 3.搭建MongoDB的集群 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中. 1.ubuntu14.04安装docker 参考文档 http://docs.docker.com/installation/ubuntulinux/ 参考文档 http://docs.docker.com/mac/started/ pc@pc-Th

MongoDB复制集数据库拆分和版本升级实战

MongoDB复制集数据库拆分和版本升级实战 问题描述 复制集rs_1上承载了所有的数据库业务,而加内存已经无法满足应用程序压力. 解决方案 考虑拆分复制集rs_1的部分数据库到rs_2,并同时升级数据库版本到2.6. 架构图 准备 评估升级可能性 1. 连接2.6 mongo shell到2.4 复制集辅助成员,在admin库执行db.upgradeCheckAllDBs().   2. 评估升级到2.6的应用程序兼容性问题,参考:http://docs.mongodb.org/manual/

MongoDB 复制集

关于读写分离 由于写入主之后,同步到从有一个时间,所以读写分离会引发数据一致性问题. MongoDB 通过复制集(Replica Set)来实现读写分离. MongoDB复制集(Replica Set) 通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用. 当遇到复制集轮转升级.Primary宕机.网络分区等场景时,复制集可能会选举出一个新的Primary,而原来的Primary则会降级为Secondary,即发生主备切换.所以,MongoDB复制集里Primary

MongoDB复制集架构

MongoDB复制集架构 由数据结点,投票结点组成,需要配置集群信息,可自动检测集群中的结点健康状态,当有结点出故障时,自动下线和切换主从结点.适用于数据量较大,高可用服务 通常,为了防止单点故障应用程序需要做集群.然而在数据库中除了防止单点故障,还需要做到数据库备份,读写分离,故障转移等.而 MongoDB 的 Replica Set 恰恰都能满足这些要求. Replica Set角色 Replica Set 的成员是一堆有着同样的数据内容 mongod 的实例集合,包含以下三类角色: 主节点

MongoDB复制集技术

第1章 MongoDB复制集简介: 一组MongoDB复制集,就是一组MongoDB进程,这些进程维护同一个数据集合,复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础 1.1 复制集的目的: 保证数据在生产部署是的冗余和可靠性,通过在不同的机器上保存副本来保证数据的不会因为单间损坏而丢失,能够随时应对数据丢失或者机器损坏带来的风险 还可以提高用户读写数据的性能,提高整个系统的负载 1.2 简单介绍: 1.      一组复制集就是一组MongoDB实例掌管同一个数据集,实例可以在不同的机

配置MongoDB复制集

什么是复制集? 复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复.复制集的优势如下: 让数据更安全 高数据可用性(24*7) 灾难恢复 无停机维护(如备份.索引重建.故障转移) 读缩放(额外的副本读取) 副本集对应用程序是透明的 复制集工作原理 MongoDB的复制集至少需要两个节点.其中一个是主节点(Primary),负责处理客户端的请求,其余的都是从节点(Secondary),负责复制主节点上的数据.Mon