部署Replica Sets及查看相关配置

时间:2021-03-16 08:32:32

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及查看相关配置

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

1、部署Replica Sets

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

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

部署Replica Sets及查看相关配置

2、 创建日志文件路径

部署Replica Sets及查看相关配置

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

部署Replica Sets及查看相关配置

4、启动3 个实例

部署Replica Sets及查看相关配置

5、配置及初始化Replica Sets

部署Replica Sets及查看相关配置

6、查看复制集状态

部署Replica Sets及查看相关配置

部署Replica Sets及查看相关配置

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

部署Replica Sets及查看相关配置

2、主从操作日志

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

Oplog 内容样例:

部署Replica Sets及查看相关配置

字段说明:

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

查看master 的oplog 元数据信息

部署Replica Sets及查看相关配置

字段说明:

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

查看slave 的同步状态:

部署Replica Sets及查看相关配置

3、主从配置信息

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

部署Replica Sets及查看相关配置

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