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实例
特点
- 每个节点的数据一致
- 只有一个节点提供写操作
- 多节点可以提供读操作
如何复制
- 主节点把数据修改操作保存至oplog中
- 从节点复制oplog文件然后回放文件中的事务
工作特性
- 至少三个节点,且应该为奇数节点,可以使用arbiter来参与选举
- heartbeat(2s),自动失效转移(通过选举方式实现)
复制集中节点的分类
- 0优先级节点: 又称为冷备节点,不会被选举成为主节点,但可以参与选举
- 被隐藏的从节点: 首先一定是一个0优先级的节点,但是对客户端以及任何mongodb集群状态显示软件不可见
- 延迟复制的从节点: 延迟一段时间复制主节点的数据,其数据的状态信息是”过期状态的”,落后与主节点一个规定时长,因此也是不能被选举成主节点
- arbiter: 没有数据,只是提供选举仲裁
mongodb的复制原理
OPLOG
- 存在与所有的副本集节点中(因为从节点有可能成为主节点的,对于从节点的oplog是不会自曾的)
- 每个节点上的oplog大小一致,一般为oplog所在分区的空闲分区的5%,如果没有1G,默认设置为1G,可自定义其大小
- oplog是具有冪等性的,同一个oplog可以在同一个节点上运行多次
- 存储oplog的是一个名为oplog.rs的collection
添加新mongodb节点的操作:
- 初始化同步
- 回滚追赶oplog
- 切片块迁移(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
- 创建数据存储目录
mkdir /data/mongo
- 启动mongod primary服务
mongod --dbpath /data/mogno1 --replSet rs0 --smallfiles --oplogSize 128
- 启动node1 mongod secondary1服务
mongod --dbpath /data/mongo2 --replSet rs0 --smallfiles --oplogSize 128
- 启动node2 mongod secondary2服务
mongod --dbpath /data/mongo3 --replSet rs0 --smallfiles --oplogSize 128
- 初始化replica set
mongo;rs.initiate()
- 添加副本节点
mongo;rs.add("node1:27017")
- 添加副本节点
mongo;rs.add("node2:27017")