Mongodb副本集

2021-11-15 17:57:17 浏览数 (1)

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

全量同步

代码语言:javascript复制
mongosync -h 10.0.4.91:27017 -u admin -p 123 --to 10.0.4.91:27020 --tu admin --tp 456

增量同步

代码语言:javascript复制
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

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

代码语言:javascript复制
mongosync -h 10.0.4.91:27017 -u admin -p 123 --to 10.0.4.91:27020 --tu admin --tp 456 --oplog

选择时间段同步

代码语言:javascript复制
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

全量同步

fromto

mongod

Replica sets

Sharding

mongod

Yes

Yes

Yes

Replica sets

Yes( Pri or Sec)

Yes (Pri)

Yes

Sharding

Yes

Yes

Yes

增量同步

fromto

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")

0 人点赞