MongoDB 支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正是由于这个情况,为MongoDB 提供了数据一致性的保障。担当Primary 角色的机器能把读操作分发给slave。

MongoDB高可用可分为两种:

  • Master-Slave主从复制:

    只需要在某一个服务器启动时加上--master参数,而另一个服务加上--slave与--source参数,即可实现同步。MongoDB的最新版本已经不再推荐此方案。

  • Replica Sets复制集

    MongoDB在1.6版本对开发新功能replica set,这比之前的replication功能要强大,增加了故障自动切换和自动修复成员节点,各个DB之间数据完全一致,大大降低了维护成功。auto shard已经明确说明不支持replication paris, 建议使用replica set,replica set故障切换完全自动。

如果上图所示,Replica Sets 的结构非常类似一个集群。是的,你完全可以把它当成集群,因为它确实跟集群实现的作用是一样的,其中一个节点如果出现故障,其它节点马上会将业务接过来而无须停机操作。

1、部署Replica Sets

接下来将一步一步的给大家分享一下实施步骤:

1、 创建数据文件存储路径

2、 创建日志文件路径

3、创建主从key 文件,用于标识集群的私钥的完整路径,如果各个实例的key file 内容不一致,程序将不能正常用。

4、启动3 个实例

5、配置及初始化Replica Sets

6、查看复制集状态

还可以用isMaster 查看Replica Sets 状态。

2、主从操作日志

MongoDB 的Replica Set 架构是通过一个日志来存储写操作的,这个日志就叫做”oplog”。oplog.rs 是一个固定长度的 capped collection,它存在于”local”数据库中,用于记录 Replica Sets 操作日志。在默认情况下,对于64 位的MongoDB,oplog 是比较大的,可以达到5%的磁盘空间。oplog 的大小是可以通过mongod 的参数”—oplogSize”来改变oplog 的日志大小。

Oplog 内容样例:

字段说明:

  • ts: 某个操作的时间戳
  • op: 操作类型,如下:
    • i: insert
    • d: delete
    • u: update
  • ns: 命名空间,也就是操作的collection name
  • o: document 的内容

查看master 的oplog 元数据信息

字段说明:

  • configured oplog size: 配置的oplog 文件大小
  • log length start to end: oplog 日志的启用时间段
  • oplog first event time: 第一个事务日志的产生时间
  • oplog last event time: 最后一个事务日志的产生时间
  • now: 现在的时间

查看slave 的同步状态:

3、主从配置信息

在local 库中不仅有主从日志oplog 集合,还有一个集合用于记录主从配置信息 –system.replset

从这个集合中可以看出,Replica Sets 的配置信息,也可以在任何一个成员实例上执行rs.conf()来查看配置信息

部署Replica Sets及查看相关配置的更多相关文章

  1. Mongo之架构部署(Replica Sets+Sharding)

    一.环境 要构建一个 MongoDB Sharding Cluster,需要三种角色: •Shard Server: mongod 实例,用于存储实际的数据块. •Config Server: mon ...

  2. Mongo的Replica Sets (复制集)的配置全过程和心得体会

    http://blog.csdn.net/bloggongchang/article/details/7272403 一.MongoDB Replica Sets(副本集)简单的说就是有自动故障恢复功 ...

  3. Tomcat部署多个项目及相关配置

    1.配置多个项目 在tomcat的conf目录下,找到server.xml,在其中添加<Host>节点即可进行多个项目的部署 <Host name="localhost&q ...

  4. CentOS7服务器查看相关配置命令

    CPU个数:(base) [jiangshan@localhost ~]$ grep 'physical id' /proc/cpuinfo | sort -u | wc -l2CPU核数:(base ...

  5. 管理维护Replica Sets

    1.读写分离 有一些第三方的工具,提供了一些可以让数据库进行读写分离的工具.我们现在是否有一个疑问,从库要是能进行查询就更好了,这样可以分担主库的大量的查询请求. 1. 先向主库中插入一条测试数据 2 ...

  6. Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置

    Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量 ...

  7. 转 Warning:MongoDB Replica Sets配置注意事项

    我们知道,MongoDB不提供单机的数据安全性,取而代之的是提供了Replica Sets的高可用方案.官方文档中提到的案例是三个节点组成的Replica Sets,这样在其中任何一个节点宕机后都会自 ...

  8. zookeeper集群的搭建以及hadoop ha的相关配置

    1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...

  9. 利用Mongodb的复制集搭建高可用分片,Replica Sets + Sharding的搭建过程

    参考资料 reference:  http://mongodb.blog.51cto.com/1071559/740131  http://docs.mongodb.org/manual/tutori ...

随机推荐

  1. JS面向对象基础

    以往写代码仅仅是为了实现特定的功能,后期维护或别人重用的时候,困难很大. Javascript作为完全面向对象的语言,要写出最优的代码,需要理解对象是如何工作的. 1.       对象是javasc ...

  2. UML学习小结

    最近在使用状态模式写一个仿Windows计算器的MFC程序,顺便学习了一下UML图的绘制,尤其是类图和状态图的绘制,这里做一下总结吧.    一.UML简介 统一建模语言UML(Unified Mod ...

  3. 时间轴CSS的Demo

    一.CSS代码(HTML5支持) /*time-line.css*/ .timeline { position: relative; padding: 20px 0 20px; list-style: ...

  4. 微信小程序实例教程(二)

    第五章:微信小程序名片夹详情页开发 今天加了新干货!除了开发日志本身,还回答了一些朋友的问题. 闲话不多说,先看下「名片盒」详情页的效果图: 备注下大致需求:顶部背后是轮播图,二维码按钮弹出模态框信息 ...

  5. fixed定位与absolute定位

    相同点: 1.fixed定位和absolute定位都是绝对定位 2.fixed定位和absolute定位都脱离了标准文档流, 3.未设置偏移量时,都定位在父元素的左上角 tip:元素设置相对定位或绝对 ...

  6. Linux下hosts、host.conf、resolv.conf

    /etc/resolv.conf 该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数. resolv.conf的关键字主要有四个,分别是: nameserver   ...

  7. VS2010与SVN

    http://blog.sina.com.cn/s/blog_4fe44775010182yl.html 在VS2010中使用SVN,必须先安装SVN的客户端,再安装VisualSVN(SVN的插件) ...

  8. C++异常第二篇---C++标准库异常类exception的使用

    1 继承图示 2 具体讲解 C++标准库异常类继承层次中的根类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下: na ...

  9. 【转】一大波实用的 bash 别名和函数

    作为一个命令行探索者,你或许发现你自己一遍又一遍重复同样的命令.如果你总是用ssh进入到同一台电脑,如果你总是将一连串命令连接起来,如果你总是用同样的参数运行一个程序,你也许希望在这种不断的重复中为你 ...

  10. iOS UIActivityIndicatorView 的使用

    UIActivityIndicatorView 非常简单 ,就是一个转圈圈的控件:http://blog.csdn.net/zhaopenghhhhhh/article/details/1209265 ...