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

posted @ 2018-03-19 16:08  _Goku  阅读(401)  评论(0编辑  收藏  举报