搭建复制集过程

  1. 在主机A上面
  2. mkdir -p /opt/srv/mongodb/log
  3. mkdir -p /opt/srv/mongodb/key
  4. mkdir -p /opt/srv/mongodb/data/a1
  5. mkdir -p /opt/srv/mongodb/data/arbiter
  6. echo "sumongodb is the best blog" > /opt/srv/mongodb/key/a1
  7. echo "sumongodb is the best blog" > /opt/srv/mongodb/key/arbiter
  8. chmod 600 /opt/srv/mongodb/key/*

  在主机B上面

  mkdir -p /opt/srv/mongodb/data/b1

  mkdir -p /opt/srv/mongodb/log

  mkdir -p /opt/srv/mongodb/key

  1. echo "sumongodb is the best blog" > /opt/srv/mongodb/key/b1
  2. chmod 600 /opt/srv/mongodb/key/*
  1.  启动mongodb
  2. mongod --replSet sumongodb --keyFile /opt/srv/mongodb/key/a1 --port 20011 --dbpath /opt/srv/mongodb/data/a1  --logpath /opt/srv/mongodb/log/a1.log --logappend --oplogSize 100 --rest --directoryperdb --maxConns 200 --fork
  3. mongod --replSet sumongodb --keyFile /opt/srv/mongodb/key/arbiter --port 20012 --dbpath /opt/srv/mongodb/data/arbiter  --logpath /opt/srv/mongodb/log/arbiter.log --logappend --oplogSize 100 --rest --directoryperdb --maxConns 200 --fork
  4. mongod --replSet sumongodb --keyFile /opt/srv/mongodb/key/b1 --port 20011 --dbpath /opt/srv/mongodb/data/b1  --logpath /opt/srv/mongodb/log/b1.log --logappend --oplogSize 100 --rest --directoryperdb --maxConns 200 --fork
  1.  初始化 
  2.   mongo --port 20011
  3. > config = {_id: 'sumongodb', members: [{_id: 0, host: '127.0.0.1:20011'},{_id: 1, host: '127.0.0.1:20012',arbiterOnly:true},{_id: 2, host:'127.0.0.1:20011'}]}
  4. > rs.initiate(config)

 就在这时,报了这样的错误:ERROR - couldn't initiate : need all members up to initiate.

 可是我检查完了所有的配置,都没有问题啊,我又重新搭建了几次,还是报同样的错误!这时的我已经很烦了,于是决定从操作系统找原因。检查了下系统时间date,结果确实发现点了什么~我发现在主机A和主机B上的系统时间不一致啊!心想太好了,这下应该解决问题了吧。我又rs.initiate(config)一把,还是同样的错误,刚刚燃起来的,又化成了灰烬!到底是哪里的原因呢。我回过头,仔细看了看错误日志,终于发现了问题的所在,我发现居然在主机B数据库上,没有local这个库,这是什么原因呢。好嘛,我 ll了一下,查看了权限问题,结果让我大吃一惊,都是些500的权限。我把权限改成root之后,重加载一下,问题就解决啦!

 

        顿时心情愉悦了!!!!!!!!