goodmm 发表于 2017-12-15 09:40:10

mongodb 3.4复制搭建

  mongodb数据库主从复制的原理:
  在主从结构中,主节点的操作记录称为oplog(operation log)。oplog存储在一个系统数据库local的集合oplog.$main中,这个集合的每个文档都代表主节点上执行的一个操作。
  可以通过以下语句查询:
  db.oplog.$main.find()
  从服务器会定期从主服务器中获取oplog记录,然后在本机上执行!对于存储oplog的集合,MongoDB采用的是固定集合,也就是说随着操作过多,新的操作会覆盖旧的操作!
  主从复制的一些设置:
  –only 从节点指定复制某个数据库,默认是复制全部数据库
  –slavedelay 从节点设置主数据库同步数据的延迟(单位是秒)
  –fastsync 从节点以主数据库的节点快照为节点启动从数据库
  –autoresync 从节点如果不同步则从新同步数据库(即选择当通过热添加了一台从服务器之后,从服务器选择是否更新主服务器之间的数据)
  –oplogSize 主节点设置oplog的大小(主节点操作记录存储到local的oplog中)
  1:首先确认一下我们已经有了这个环境了:
  

mongodb数据库1 localhost:27017  
mongodb数据库2 localhost:27018
  

  2:修改配置文件
  

vi mongodb27018.conf  

  加入以下几个参数
  

bind_ip = 127.0.0.1 #从数据库所在服务器  
source = 127.0.0.1:27017 #确定主数据库端口
  
slave = true #确定自己是从服务器
  
vi mongodb27017.conf
  
加入以下参数
  
bind_ip = 127.0.0.1 #主数据库所在服务器
  
master = true #确定我是主服务器
  

  3:重启两天mongodb数据库
  进入数据库
  

use admin  
db.shutdownServer()
  

  关闭后重新启动数据库
  4:从节点登陆
  mongodb 127.0.0.1:27108
  show dbs
  返回错误,因为从节点不可读,然后执行下面语句OK
  在从节点上执行rs.slaveOk()
  或者在主节点上执行db.getMongo().setSlaveOk()
  5:开始验证数据
  主库添加数据:
  mongodb 127.0.0.1:27107
  use maxiangqian
  db.student.insert({"name":"maxiangqian"})
  从库验证数据:
  use maxiangqian
  db.student.find()
  发现数据已经同步了
  6:查看同步状态
  rs.printReplicationInfo()
  官网给的解释:
  1:启动master:mongod --master --dbpath /data/masterdb/
  2:启动slave:mongod --slave --source <masterhostname><:<port>> --dbpath /data/slavedb/
  3:从库添加:
  use local
  db.sources.find()
  db.sources.insert( { host: <127.0.0.1:27107> } );
  删除复制的联系:
  直接在从库执行:
  use local
  db.sources.remove({“host”:”127.0.0.1:8888”})
页: [1]
查看完整版本: mongodb 3.4复制搭建