MongoDB 复本集搭建
复制集的特点
数据一致性
主是唯一的,但不是固定的 没有MySQL那样的双主结构
大多数原则,集群存活节点小于等于二分之一时集群不可写,只可读。
是否能选举出新的主节点,是由当前复制集成员存活量来决定的。
从库无法写入 MySQL从库的readonly对具有super权限的用户无效
自动容灾
传统主从 ---> only 选项来限制复制的数据
复制集 ---> 不支持只复制指定的库
3.0 版本前复制集参与选举的数据节点只能有7个
3.0 以上支持50个
# 创建配置文件 # 28001 cat >mongod28001.conf << EOF port=28001 # 端口,默认端口27017 bind_ip=192.168.11.166 # 监听端口,默认允许所有 logpath=/usr/local/mongodb/log/28001.log # 日志 logappend=true # 以追加的方式写入数据 dbpath=/usr/local/mongodb/data/28001 # 存放数据目录,默认/data/db/ pidfilepath=/var/run/mongd28001.pid # pid 文件 fork=true # 后台启动 #auth=true # 开启验证 oplogSize=102400 # 默认oplog 大小会使用可用磁盘空间的5% replSet=hehe #复制集名称 EOF # 28002 cat >mongod28002.conf << EOF port=28002 bind_ip=192.168.11.166 logpath=/usr/local/mongodb/log/28002.log logappend=true dbpath=/usr/local/mongodb/data/28002 pidfilepath=/var/run/mongd28002.pid fork=true #auth=true oplogSize=102400 replSet=hehe #复制集名称 EOF # 28003 cat >mongod28003.conf << EOF port=28003 bind_ip=192.168.11.166 logpath=/usr/local/mongodb/log/28003.log logappend=true dbpath=/usr/local/mongodb/data/28003 pidfilepath=/var/run/mongd28003.pid fork=true #auth=true oplogSize=102400 replSet=hehe #复制集名称 EOF
启动实例: mongod -f /usr/local/mongodb/conf/mongod28001.conf mongod -f /usr/local/mongodb/conf/mongod28002.conf mongod -f /usr/local/mongodb/conf/mongod28003.conf
# 初始化
mongo 192.168.11.166:28001/admin
# 定义配置文件,存放路径use local db.system.replset.find()
config = {
_id:"hehe", # 应该与配置文件中的replSet 一致
members:[
# priority优先级,此节点健康时候,优先为主节点
{_id:0,host:"192.168.11.166:28001",priority:5},
{_id:1,host:"192.168.11.166:28002"},
{_id:2,host:"192.168.11.166:28003"}
]
}
# 更改config,更改192.168.11.166:28003为投票节点
config.members[2] = {"_id":2,"host":"192.168.11.166:28003","arbiterOnly":true}
# 执行初始化命令
rs.initiate(config)
# 重新初始化,更改config时候执行,使用rs.reconfig() 会短暂断开
rs.reconfig(config)
# 查看复制集状态
rs.status()
# 从节点
rs.slaveOk(1) 或者rs.slaveOk(true)
# 投票节点
# local 库 大小,mongodb 默认存放的物理文件local.*
# 默认为local.0 为64MB,命名空间为16MB ,
# 默认投票节点的local库大小为79-80MB
# 查看复制集状态查看
db.printSlaveReplicationInfo()
rs.printSlaveReplicationInfo()
# 查看状态详情
db.serverStatus().repl()
# 查看oplog状态
rs.printReplicationInfo()

浙公网安备 33010602011771号