mongodb的部署配置
[TOC]
1. mongod启动时常用选项
--fork={true|false}: mongod是否在后台运行
--bind_ip=IP: 指定监听地址, 不启动时默认监听本机所有地址
--port=PORT: 指定监听端口
--maxConns=NUM: 并发最大连接数
--logpath arg: 日志路径
--logappend: 日志滚动, 添加而不是覆盖
--pidfilepath arg
--keyFile arg: 实现集群关系认证时的私钥文件位置
--setParameter arg
--httpinterface: enable http interface
--repair: 突发情况中断数据库, 可用此选项修复
--journal: 激活事务日志 (单实例必须开启)
--journalCommitInterval arg: 提交日志间隔
调试选项 (消耗资源, 除非必要否则不开启):
--cpu
--slowms arg (=100): 慢查询
--profile arg: 性能剖析, 0=off, 1=slow (仅剖析慢查询), 2=all (剖析所有查询操作)
2. mongodb的复制
两种类型的复制:
master/slave
replica set: 副本集 (自动故障转移)
服务于同一个数据集的多个mongodb实例, 主节点将数据修改操作保存至oplog中
arbiter: 仲裁节点
工作特性:
(1) 至少三个, 且应该为奇数个, 可使用arbiter来参与选举
(2) heartbeat (2s), 自动失效转移(通过选举方式)
复制集中的特殊节点分类:
(1) 0优先级的节点: 冷备节点, 不会被选举成为主节点, 但可参与选举
(2) 被隐藏的从节点: 首先是个0优先级的节点, 且对客户端不可见, 但依然可以参与选举
(3) 延迟复制的从节点: 首先是个0优先级的节点, 且复制时间落后于主节点一个固定时长, 但依然可以参与选举
(4) aribter
mongodb的复制架构: oplog和heartbeat
oplog:实现复制过程的基础工具, 大小固定的文件存储在local数据库中, 大小为oplog所在文件系统的5%, 最小1G
初始同步 (initial sync)
回滚后追赶 (post-rollback catch-up)
切分块块迁移 (sharing chunk migrations)
heartbeat: 心跳信息传递并触发选举
local: 存放副本集的所有元数据和oplog, 自己不参与复制过程, 用于存储oplog的是一个名为oplog.rs的collection, oplog.rs在加入副本集后第一次启动时被自动创建, 大小依赖于OS和文件系统, 启动服务是可自定义大小, --oplogSize arg 单位MB
mongodb的数据同步类型:
1.初始同步:
两种情形下会被触发:
从节点没有任何数据, 但主节点已在运行
节点丢失副本复制历史
初始同步的步骤:
(1) 克隆所有数据库的所有collection
(2) 应用数据的所有改变: 复制oplog并应用在本地
(3) 为所有collection构建索引
2.复制
vi /etc/mongod.conf
replSet=testSet
replIndexPrefetch=_id_only
service mongod start
mongo
>rs.help()
>rs.status()
>rs.initiate([cfg])
>rs.add("{hostname|ip}:port") # 注意字符串用引号引起来
>rs.isMaster()
>rs.slaveOk() # 开启此命令后从节点才可读数据
>rs.conf()