今天我测试了一下MongoDB的副本集的配置。

首先从概念上说一下MongoDB副本集和主从复制的区别。其实副本集(Replica Set)是主从复制的高级形式。高级在哪里呢?主动复制实现了数据备份+读扩展,但是master一旦down掉,需要手动启动slave。副本集在此基础上实现了备份自动重启的功能,也就是某一台slave会挺身而出,担当起master的职责。所以有三个角色,master(Primary),slave(Secondary),还有仲裁服务器(这哥们指定哪台slave应该挺身而出)。

我的测试环境和上次基本相同:

一台master(primary):mmaster 192.168.42.132

两台slave(secondary):mslave1 192.168.42.134 mslave2 192.168.42.135

全是ubuntu 12.10 server 版 OS, MongoDB 2.4.3

配置和实现方法:

1 配置/etc/hosts,把上面三台虚拟机的DNS信息写到里面

2 配置/etc/mongodb.conf,需要修改的东西真是不多,最主要的是屏蔽掉master slave这部分东西,也就是主从复制里面的修改,然后配置replSet=true,有没有空格无所谓,三台虚拟机都只这么配置,可见我们并没有指定谁是master。

3 先把master跑起来。进入你想成为master的那台机器,重启mongod,然后进入该机器mongo的客户端,进行一下很简单的设置。

rsconf = {
_id: "rs0",
members: [
{
_id: 0,
host: "<hostname>:27017"
}
]
}
rs.initiate( rsconf )

这是构建一个配置的对象,然后初始化一下。第一个ID是副本集的名字,member里面是指定了成员机器的id和网络位置。这里先把master添加进来就好了,下面可以一台一台的添加其他的成员。注意要稍等一段时间,MongoDB需要时间来转换他的状态。该机器被默认为了master(primary)。

4 再把slave加进我们的副本集里面。现在master里面add一个slave

rs.add("<hostname>:27017")

然后到这台slave所在的虚拟机上面去,重启MongoDB,进入Mongo客户端,一分钟后你会发现slave变成了Secondary,并且同步了数据。但是,事情还没有完。你测试会发现,不能读取数据,虽然数据同步了。没关系,这这MongoDB slave还需要你确认一下,只要输入

rs.slaveOk()

在测试你就会发现可以读取数据了。

5 添加仲裁服务器。这个我是删除了一种一台slave2,然后通过命令rs.addArb("host:port")添加上仲裁服务器,然后测试的,不需要其他配置。当master被关掉后,能够实现转换,测试成功。注意,根据我看到的资料,没有仲裁是不能实现自动转换的,仲裁服务器参考资料:http://docs.mongodb.org/manual/tutorial/add-replica-set-arbiter/

以上就是我的测试过程,发现网上很多资料都不靠谱,所以大家谨慎使用资料。我的参考资料是

http://docs.mongodb.org/manual/tutorial/deploy-replica-set/

也就是英文的官方网站资料,10gen的资料做的还是很准确的,所以建议大家看这个,很快可以上手。

最后上个图,可以看到我的副本集状态:

MongoDB系列之三(副本集配置)的更多相关文章

  1. mongodb系列之---副本集配置与说明

    在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...

  2. 10.MongoDB系列之副本集组成

    1. 同步 复制是指多台服务器保持相同的数据副本.MongoDB通过保存操作日志(oplog)实现复制功能. oplog存在于主节点local数据库中的一个固定集合,包含了主节点执行的每一次写操作. ...

  3. 12.MongoDB系列之副本集管理

    1. 控制成员状态 1.1 把主节点变为从节点 rs.stepDown() 1.2 阻止选举 如果需要对主节点维护,不想期间其他从节点选举为主节点,则可以 rs.freeze(10000) 维护完成后 ...

  4. MongoDB副本集配置系列三:副本集的认证方式

    1:副本集配置参考这篇博客: http://www.cnblogs.com/xiaoit/p/4478951.html 2:副本集的认证 假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这 ...

  5. mongodb生产环境(副本集模式)集群搭建配置

    mongodb副本集模式由如下几部分组成: 1.路由实例mongos 2.配置实例configsvr 3.副本集集群replset(一主多从) tips: 1.以上实例都是mongod守护进程 2.以 ...

  6. [Database] MongoDB 副本集配置

    MongoDB 副本集配置 MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允许您从硬 ...

  7. 分布式文档存储数据库(MongoDB)副本集配置

    副本集特征: N 个节点的集群 任何节点可作为主节点 所有写入操作都在主节点上 自动故障转移 自动恢复 相关文章: http://www.cnblogs.com/huangxincheng/archi ...

  8. MongoDB 副本集配置,开启账号认证

    MongoDB 自带功能强大的主从,配置也很简单,从零开始花了30分钟搞定 3台以上机器IP: 192.168.1.24, 192.168.1.25, 192.168.1.26, 192.168.1. ...

  9. Mongodb 笔记06 副本集的组成、从应用程序连接副本集、管理

    副本集的组成 1. 同步:MongoDB的复制功能是使用操作日志oplog实现的,操作日志包含了主节点的每一次写操作.oplog是主节点的local数据库中的一个固定集合.备份节点通过查询整个集合就可 ...

  10. Mongodb 笔记06 副本集的组成、从应用程序连接副本集、管理

    副本集的组成 1. 同步:MongoDB的复制功能是使用操作日志oplog实现的,操作日志包含了主节点的每一次写操作.oplog是主节点的local数据库中的一个固定集合.备份节点通过查询整个集合就可 ...

随机推荐

  1. win32 api Windows窗口的创建

    windows窗口的创建有以下几个步骤: 1.创建注册窗口类 2.创建窗口句柄 3.显示更新窗口 4.消息循环 1.创建注册窗口类 所谓创建窗口类就是定义一个WNDCLASS类对象,并将该对象进行初始 ...

  2. 【SVN】is out of date

    右击项目(team->update 或者 team->freash/cleanup),再操作,提交就可以了.

  3. Android面试题整理(1)

    1.Activity的生命周期      onCreate(Bundle saveInstanceState):创建activity时调用.      onStart():activity可见时调用 ...

  4. list,map的疑问

    代码: package com.wyl; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator ...

  5. mysqldump 备份数据说明+ 避免锁表

    1.mysqldump命令备份Mysql数据库的参数说明 在用mysqldump备份使用那些参数选项是最完美的组合呢?--skip-opt--create-option                 ...

  6. Python-zip压缩-解压

    #打包成zip文件 import zipfile f = zipfile.ZipFile('archive.zip','w',zipfile.ZIP_DEFLATED) f.write('file_t ...

  7. java-finalize

    finalize()来自Object的protected 方法,同clone()需要用户具体实现.一.源码中的介绍1.    Called by the garbage collector on an ...

  8. java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode(尼玛,蛋疼的错误)

    java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode   \-[M ...

  9. Json也可以这么使

    public string GetJSON() { //Json数据 string json112 = "{\"control_info\":{\"imei\& ...

  10. 组件接口(API)设计指南-文件夹

    组件接口(API)设计指南-文件夹 组件接口(API)设计指南[1]-要考虑的问题 组件接口(API)设计指南[2]-类接口(class interface) 组件接口(API)设计指南[3]-托付( ...