`
m635674608
  • 浏览: 5043322 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

MongoDB——主从复制&副本集

 
阅读更多

 前面我说到了,MongoDB数据库支持服务器之间的数据复制。支持主从模式及服务器之间的相互复制。目的当然是实现负载均衡与故障恢复。Mongo中内置了两种技术:主从复制、副本集。下面就简单介绍这两种模式的配置。

 

一、    主从复制

 

       主从复制是一个简单的数据库同步备份的集群技术。模型如下:

 

  

 

 

       需要注意:

       在数据库集群中要明确的知道谁是主服务器,主服务器只有一台。

       从服务器要知道自己的数据源,也就是自己的主服务器是谁。

       --master用来明确主服务器,--slave和—source来控制从服务器。

  实例

       配置其实非常简单,类似我们前面讲到的Redis的主从复制,思路如下:

       我们现在起两个MongoDB的数据库实例,一个作为Master一个作为Slave,然后从Master存数据,然后看是否能从Slave中取出数据即可。步骤如下:

  步骤一:

  分别做好Master(用8888端口)和Slave(用7777端口)的服务端与客户端的启动bat文件:

  

  

 

 

       Master的文件内容依次如下:

       8888.conf:

 

  

 

 

       8888mongodbStartServer.bat:

 

  

 

 

       8888mongodb.bat:

 

  

 

 

       Slave的文件内容如下:

       7777.conf:

 

  

 

 

  7777mongodbStartServer.bat:

 

  

 

 

  7777mongodb.bat:

 

  

 

 

  步骤二:

  双击Master的启动bat文件(8888mongodbStartServer.bat):

 

  

 

 

  双击Slave的启动bat文件(7777mongodbStartServer.bat):

 

  

 

 

  步骤三:

  双击Master的客户端启动bat文件(8888mongodb.bat),并新建一个数据库,同时插入数据:

 

  

 

 

  步骤四:

  双击Slave的客户端启动bat文件(7777mongodb.bat),并查询是否存在刚刚在Master中新建的数据库、Collection与插入的两条数据:

 

  

 

 

  这就说明,主从复制已配置成功。这里还需要注意,Slave数据库实例是不允许我们插入、修改数据的,我们只能操作Master数据库服务器,例如我们在Slave中插入一条数据,会报错:

 

  

 

 

  实例的结构图如下:

  
  
 
 
 

 

二、    副本集

 

  与主从复制所能达到的效果类似。主从复制模型中的Master相当于副本集中的“活跃”节点;Slave相当于“备份”节点,如下图:

 

  

 

 

  上图1,表明A是活跃的,B、C是用于备份的;图2表示,当A出现故障,这时候集群根据权重算法推选出B为活跃数据库节点;图3表示,当A恢复故障后,它自动变为了备份节点。

  与主从复制不同的是,主从复制中只有一个Master,当Master节点挂掉之后,所有的Slave节点无法自动变为Master,继续提供服务。这时所有的 Slave也就会因连不上Master而无法继续备份数据,直到它再次连到Master。

  而副本集中所有的节点都可以成为“活跃”节点(一开始是随机推出的),当当前的活跃节点挂掉之后,集群会立即从其它完好的备份节点中推选出一个节点作为“活跃节点”,整个副本集群不会停止备份服务。

  配置

       配置与主从复制的配置相似,这里不再像上面那么详细的一步步介绍,直接给出大概配置:

       准备三套MongoDB的启动配置:(监听不同的端口)

 

  三个启动配置(A/B/C.conf)如下:

 

  

 

 

  先启动Mongo的三个服务端实例,并初始化副本集:

 

  

 

 

  然后,启动Mongo的客户端实例,启动后可以看出哪个活跃节点,哪些是备份节点:

 

  

  

 

 

  然后就可以做类似“主从复制”的实例来验证我们是否配置成功。

 

 

http://blog.csdn.net/wang379275614/article/details/47262427

http://snowolf.iteye.com/blog/1974747

分享到:
评论

相关推荐

    5.2 MongoDB的三种集群模式1

    本文将深入探讨MongoDB的三种集群模式之一——主从(master-slave)集群。 主从集群是一种常见的分布式数据库架构,通常用于数据备份和读写分离。在主从架构中,有一个主节点(master)负责处理所有的写操作,并将...

    MongoDB北京2014 - MongoDB在快的打车关键业务中的应用 - 欧阳康

    ### MongoDB在北京2014大会中的应用案例——快的打车 #### 一、快的打车业务背景 快的打车成立于2012年5月,同年8月正式上线运营,短短两年多时间迅速崛起,成为中国领先的移动出行平台之一。至2014年9月,快的...

    分布式数据库面试专题系列:Redis+MongoDB

    在面试中,你需要了解Redis的主要功能,比如缓存机制、持久化策略(RDB和AOF)、主从复制、Sentinel哨兵系统和Cluster集群等。同时,理解Redis的适用场景也很关键,例如作为会话存储、计数器、发布/订阅系统等。 ...

    Book of MongoDB and Hadoop

    《MongoDB和Hadoop》这本书主要探讨了两个大数据领域的关键组件——MongoDB和Hadoop,它们在现代数据处理和分析中扮演着重要角色。MongoDB是一款流行的开源文档型数据库,而Hadoop则是一个用于大规模数据处理的开源...

    数据同步复制:确保数据库一致性的高级策略

    MongoDB使用副本集(Replica Set)实现同步复制: ```javascript // 启动 MongoDB 副本集 rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "localhost:27017" }, { _id: 1, host: "localhost:27018" }, ...

    10NoSQL非关系型数据库.zip

    - **部署**:MongoDB的部署包括单机、复制集、分片集群等多种模式,适应不同规模的场景。 - **数据类型**:MongoDB同样有多种数据类型,如整数、浮点数、字符串、数组、对象等,且支持复杂查询和聚合操作。 - **...

    Nosql failover characteristics

    本文将分析几个主流的NoSQL数据库平台—— Aerospike, Cassandra, Couchbase 和 MongoDB——在面对节点故障时的故障转移特性。 故障转移(failover)是数据库系统在面临故障时的一种自我恢复策略。它允许系统在主...

    redis的window版,直接打开启动可以,傻瓜式

    3. **复制**:Redis支持主从复制,可以创建多个副本以提高可用性和读取性能。 4. **事务**:Redis支持简单的事务操作,允许用户一次性执行多条命令,保证原子性。 5. **Lua脚本**:Redis内置了Lua解释器,允许用户...

    分布式计算 原理、算法和系统.(英文)

    复制策略如主备复制、多副本复制等也是保证数据一致性的方法。 4. **分布式算法**:包括选举算法(用于选择领导者或解决冲突)、分布式共识算法(如Paxos、Raft等)、分布式哈希表(DHT)算法等,这些都是分布式...

    Google论文

    它通过引入主从架构、数据块复制和元数据管理机制,实现了数据的高吞吐量读写和高度的容错性。 **深度解析:** GFS的设计围绕着几个核心概念展开。首先是大块存储,GFS将数据划分为64MB的数据块,每个块在多台...

Global site tag (gtag.js) - Google Analytics