前面我说到了,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
相关推荐
本文将深入探讨MongoDB的三种集群模式之一——主从(master-slave)集群。 主从集群是一种常见的分布式数据库架构,通常用于数据备份和读写分离。在主从架构中,有一个主节点(master)负责处理所有的写操作,并将...
### MongoDB在北京2014大会中的应用案例——快的打车 #### 一、快的打车业务背景 快的打车成立于2012年5月,同年8月正式上线运营,短短两年多时间迅速崛起,成为中国领先的移动出行平台之一。至2014年9月,快的...
在面试中,你需要了解Redis的主要功能,比如缓存机制、持久化策略(RDB和AOF)、主从复制、Sentinel哨兵系统和Cluster集群等。同时,理解Redis的适用场景也很关键,例如作为会话存储、计数器、发布/订阅系统等。 ...
《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" }, ...
- **部署**:MongoDB的部署包括单机、复制集、分片集群等多种模式,适应不同规模的场景。 - **数据类型**:MongoDB同样有多种数据类型,如整数、浮点数、字符串、数组、对象等,且支持复杂查询和聚合操作。 - **...
本文将分析几个主流的NoSQL数据库平台—— Aerospike, Cassandra, Couchbase 和 MongoDB——在面对节点故障时的故障转移特性。 故障转移(failover)是数据库系统在面临故障时的一种自我恢复策略。它允许系统在主...
3. **复制**:Redis支持主从复制,可以创建多个副本以提高可用性和读取性能。 4. **事务**:Redis支持简单的事务操作,允许用户一次性执行多条命令,保证原子性。 5. **Lua脚本**:Redis内置了Lua解释器,允许用户...
复制策略如主备复制、多副本复制等也是保证数据一致性的方法。 4. **分布式算法**:包括选举算法(用于选择领导者或解决冲突)、分布式共识算法(如Paxos、Raft等)、分布式哈希表(DHT)算法等,这些都是分布式...
它通过引入主从架构、数据块复制和元数据管理机制,实现了数据的高吞吐量读写和高度的容错性。 **深度解析:** GFS的设计围绕着几个核心概念展开。首先是大块存储,GFS将数据划分为64MB的数据块,每个块在多台...