zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Mongodb副本集

2023-03-14 22:53:04 时间

mongodb doc

mongodb的端口

  • mongod:27017
  • http:28017

mongod命令的常用选项

  • fork: 是否运行为后台进程
  • bind_ip: 绑定的ip地址
  • maxConns: 最大的连接数
  • logpath: 设置日志的存储路径
  • syslog: 设置是否为syslog来管理日志
  • syslogFacility: 如果由syslog来管理日志,那么日志的级别是local1,local2…还是local7
  • logappend: 日志滚动,就是把日志已追加的方式记录,而不是覆盖
  • pidFile: 设置pid文件的存放路径
  • keyFile: 指定集群中私钥通信文件的路径
  • httpinterface: 是否启用restful风格的http接口来便捷查看mongodb运行的状态和统计数据28017
  • nounixsock: 是否创建本地的socket文件
  • auth: 通过认证方式访问mongodb
  • repair: 指在数据库集群异常崩溃或者异常断电数据没有写入到系统文件时,需要此选项修复
  • journal: 是否启用日志功能,该日志类似于事务日志,先把事务写成日志,然后在同步事务,把随机IO转换成顺序IO,单实例下一定要启用
  • journalOptions: 日志选项
  • journalCommitInterval: 日志的提交时间间隔
  • replSet: 设置副本集名称
  • cpu: 阶段性显示cpu和iowait的利用率
  • slowms: 设置慢查询的临界值
  • profile: 性能剖析选项,0表示关闭选项,1表示仅剖析慢查询操作,2表示剖析所有的操作
  • oplogSize: 自定义oplog文件的大小

mongodb复制功能

master/slave

已经弃用

replica set副本集

集群自我修复,服务于同一数据集的多个mongodb实例

特点

  • 每个节点的数据一致
  • 只有一个节点提供写操作
  • 多节点可以提供读操作

如何复制

  1. 主节点把数据修改操作保存至oplog中
  2. 从节点复制oplog文件然后回放文件中的事务

工作特性

  1. 至少三个节点,且应该为奇数节点,可以使用arbiter来参与选举
  2. heartbeat(2s),自动失效转移(通过选举方式实现)

复制集中节点的分类

  • 0优先级节点: 又称为冷备节点,不会被选举成为主节点,但可以参与选举
  • 被隐藏的从节点: 首先一定是一个0优先级的节点,但是对客户端以及任何mongodb集群状态显示软件不可见
  • 延迟复制的从节点: 延迟一段时间复制主节点的数据,其数据的状态信息是”过期状态的”,落后与主节点一个规定时长,因此也是不能被选举成主节点
  • arbiter: 没有数据,只是提供选举仲裁

mongodb的复制原理

OPLOG

  • 存在与所有的副本集节点中(因为从节点有可能成为主节点的,对于从节点的oplog是不会自曾的)
  • 每个节点上的oplog大小一致,一般为oplog所在分区的空闲分区的5%,如果没有1G,默认设置为1G,可自定义其大小
  • oplog是具有冪等性的,同一个oplog可以在同一个节点上运行多次
  • 存储oplog的是一个名为oplog.rs的collection

添加新mongodb节点的操作:

  1. 初始化同步
  2. 回滚追赶oplog
  3. 切片块迁移(sharding chunk migrations)

mongodb数据同步

mongosync

source

target

172.21.0.1:27017

172.21.0.31:27017

全量同步

mongosync -h 10.0.4.91:27017 -u admin -p 123 --to 10.0.4.91:27020 --tu admin --tp 456

增量同步

mongosync -h 10.0.4.91:27017 -u admin -p 123 --to 10.0.4.91:27020 --tu admin --tp 456 --oplog -s 1369406664,1

全量和增量同步,实时同步

mongosync -h 10.0.4.91:27017 -u admin -p 123 --to 10.0.4.91:27020 --tu admin --tp 456 --oplog

选择时间段同步

mongosync -h 10.0.4.91:27017 -u admin -p 123 --to 10.0.4.91:27020 --tu admin --tp 456 --oplog -s 1369811325,1 -t 1369811373,1

备份参数

同步

bysync

Full sync

Inc sync

All dbs

Yes

Yes

Specify one db(-d)

Yes

Yes

Specify one coll(-d -c)

Yes

Yes

Time range(-s -t)

Yes

Yes

全量同步

from o

mongod

Replica sets

Sharding

mongod

Yes

Yes

Yes

Replica sets

Yes( Pri or Sec)

Yes (Pri)

Yes

Sharding

Yes

Yes

Yes

增量同步

from o

mongod

Replica sets

Sharding

mongod

Replica sets

Yes(Pri or Sec)

Yes(Pri)

Yes

Sharding

Yes

Yes

Yes

deploy replica set

  1. 创建数据存储目录mkdir /data/mongo
  2. 启动mongod primary服务 mongod --dbpath /data/mogno1 --replSet rs0 --smallfiles --oplogSize 128
  3. 启动node1 mongod secondary1服务mongod --dbpath /data/mongo2 --replSet rs0 --smallfiles --oplogSize 128
  4. 启动node2 mongod secondary2服务mongod --dbpath /data/mongo3 --replSet rs0 --smallfiles --oplogSize 128
  5. 初始化replica set mongo;rs.initiate()
  6. 添加副本节点 mongo;rs.add("node1:27017")
  7. 添加副本节点 mongo;rs.add("node2:27017")