`
275553385
  • 浏览: 705383 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
文章分类
社区版块
存档分类
最新评论

NOSQL之Mongodb副本集配置与管理

阅读更多
NOSQL之Mongodb副本集配置与管理

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

一台master(primary):wxseio-web  172.16.2.123
两台slave(secondary):
                      web1 : 172.16.2.109 
                      web2 : 172.16.2.19
全是CentOS6.4-64位, MongoDB 2.4.6


配置和实现方法:

1)、 配置/etc/hosts,把上面三台机器的IP信息写到里面

2)、 配置/usr/local/momgodb/config/mongodb27017.conf,需要修改的东西真是不多,最主要的是屏蔽掉master slave这部分东西,也就是主从复制里面的修改,然后配置replSet=true,有没有空格无所谓,三台虚拟机都只这么配置,可见我们并没有指定谁是master。
port = 27017
logpath = /data/mongodb/27017/mongodb.log
logappend = true
fork = true
dbpath = /data/mongodb/27017
journal = true
replSet = true
rest = true
oplogSize = 64 #单位是M

3)、 先把master跑起来。进入你想成为master的那台机器,重启mongod,然后进入该机器mongo的客户端,进行一下很简单的设置。
rsconf = {
           _id: "true",
           members: [
                      {
                       _id: 0,
                       host: "wxseio-web: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/
分享到:
评论
1 楼 275553385 2014-01-13  
有人可能会问建立Replica Set之后,万一出现Primary宕机,IP地址的问题如何解决。没有问题,读者可以查阅下资料,MongoDB的API已经提供了解决的方法。我使用的libmongo-client是c语言的API,里面提供的mongo_sync_reconnect()函数,自动找到新的Primary的IP,进行重连。

注意配置oplogSize这个参数,以M为单位,否则可能出现oplog.rs预分配空间过大的问题。

相关推荐

    《10天掌握MongoDB》2012完整版.pdf[带书签]

    MONGODB的下载与安装 MONGODB SHELL MONGODB的数据类型 MONGODB的基本数据类型 MONGODB的数组 MONGODB的文档嵌套 MONGODB的OBJECTID 结束语 第二天:初识增删改 添加文档 删除文档 更新文档-文档更换1 更新文档-文档...

    MongoDB权威指南 中文第2版-01卷

    三部分讲述复制,包括副本集的相关概念、创建方法,与应用程序的交互等。四部分讨论分片,包括分片的配置,片键的选择,集群的管理。五部分阐述创建索引、移动和压缩数据等管理任务,以及MongoDB的持久数据存储。...

    搭建高可用mongodb集群(二)——副本集

    在上一篇文章《搭建高可用MongoDB集群(一)——配置MongoDB》提到了几个问题还没有解决。1.主节点挂了能否自动切换连接?目前需要手工切换。2.主节点的读写压力过大如何解决?3.从节点每个上面的数据都是对数据库...

    MongoDB权威指南 中文第2版-02卷

    三部分讲述复制,包括副本集的相关概念、创建方法,与应用程序的交互等。四部分讨论分片,包括分片的配置,片键的选择,集群的管理。五部分阐述创建索引、移动和压缩数据等管理任务,以及MongoDB的持久数据存储。...

    MongoDB权威指南(中文版)高清

    1239.2 副本集 1249.2.1 初始化副本集 1259.2.2 副本集中的节点 1279.2.3 故障切换和活跃节点选举 1289.3 在从服务器上执行操作 1299.3.1 读扩展 1309.3.2 用从节点做数据处理 1309.4 工作原理 1309...

    mongodb笔记

    此笔记是我个人通过自学整理出来的。希望看到的人有什么建议告诉我。也可以共同去学习!里面内容包括:安装配置、增删改查、用户管理、主从复制、分片、副本集以及和JAVA的结合案例等等!

    大数据云计算技术系列 NoSQL数据库学习教程(共71页).pdf

    5 配置管理 5 Darkmode 5 进程管理 5 硬件 5 代码协同经验 5 Review制度 5 部署管理 5 团队沟通 5 Cache 5 云计算架构 5 反模式 5 单点失败(Single Point of Failure) 5 同步调用 5 不具备回滚能力 5 不记录日志 5...

    Java思维导图xmind文件+导出图片

    NOSQL简介及MongoDB支持的数据类型分析 MongoDB可视化客户端及JavaApi实践 手写基于MongoDB的ORM框架 MongoDB企业级集解决方案 MongoDB聚合、索引及基本执行命令 MongoDB数据分片、转存及恢复策略 MyCat ...

    VacationRentals-2.0:使用MERN堆栈开发了度假租赁应用程序的财产预订,用户身份验证和配置文件管理模块。 必要时实现React-Redux。 将关系数据转移到NoSQL数据库。 将Kafka实现为消息队列服务。 使用JMeter和Mocha测试了应用程序的性能

    该项目是HomeAway( )的副本。 纯粹出于学习目的而开发。 使用的技术: 前端:React-Redux,HTML,CSS,Bootstrap 后端:NodeJS,ExpressJS,JWT,Kafka,猫鼬 数据库:MongoDB 功能性 用户(旅行者模式) 登录 ...

    EleasticSearch基本原理及架构.pdf

    (MySQL、sybase、Oracle、达梦、神通、MongoDB、Hbase…) 2)如何解决单点故障;(lvs、F5、A10、Zookeeper、MQ) 3)如何保证数据安全性;(热备、冷备、异地多活) 4)如何解决检索难题;(数据库代理中间件:mysql-...

    网络架构师148讲视频课程

    │ 第118节:副本集管理和主从复制.avi │ 第119节:MongoDB的分片一.avi │ 第120节:MongoDB的分片二.avi │ 第121节:MongoDB的分片三.avi │ 第122节:MongoDB分片的片键选择.avi │ 第123节:MongoDB分片的管理...

Global site tag (gtag.js) - Google Analytics