MongoDB单点转复制集(二)

上一篇文章,已经完成一个单节点的复制集,现在我们向该复制集中添加新节点。

1,启动新节点MongoDB服务

以相同的配置文件启动新节点上的MongoDB。

启动配置文件为:

systemLog:
  destination: file
  path: "/mongodb-3.2.8/logs/mongodb.log"
  logAppend: true
 
storage:
  dbPath: "/mongodb-3.2.8/data"
  journal:
    enabled: true
  directoryPerDB: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 20
 
processManagement:
  fork: true
 
net:
  bindIp: 0.0.0.0
  port: 27017
 
setParameter:
  enableLocalhostAuthBypass: true
 
replication:
  replSetName: "sprintrs1"
 
security:
  clusterAuthMode: keyFile
  keyFile: "/mongodb-3.2.8/conf/.keyFile"

注意replication中的replSetName与primary节点一致。

启动MongoDB服务

bin/mongod -f conf/mongodb.conf

2,添加节点

在primary节点上,登录mongo shell,执行命令:

rs.add({_id: 1, host: "192.168.1.250:27017", priority: 10})

3,日志分析

将一个新节点加入复制集中,会发生什么我们看下日志。

3.1 本地MongoDB服务的初始化

下图红线以上部分,为本地MongoDB服务的初始化操作。

3.2 执行add操作

接收到primary发过来的复制集config,确定本机mongodb在配置文件中,并将自己的状态转变为STARTUP2.

 3.3 initial sync操作

新加入复制集的节点,进行initail sync操作,

删除所有的database(出了local db),并从primary节点复制所有的database。

 3.4 执行sync

逐个数据库进行同步。

 3.5 initial sync done,并执行选举

 由于此节点的priority为10,所以此节点转换为primary。

到此往复制集中添加节点就完成了。

4总结

4.1 复制集状态

复制集中新加节点时,涉及状态startup2:表示正在进行init sync。

关于复制集节点的各个状态详细介绍,请参见参见:https://blog.csdn.net/wxlkeepmoving/article/details/124865825

4.2复制集新加节点的两个阶段

进行数据同步需要两个阶段:

  1. Initial Sync
    从复制集的一个节点拷贝所有数据,到新节点。
  2. Replication
    Initial sync完成后,Secondary 节点持续从source节点读取oplog,并进行恢复。

4.3 local database

  • 每个mongod实例都有一个local database;
  • 存储的数据为复制集相关的配置相关数据和实例特定的数据;
  • local database不参与复制集数据的复制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值