搭建複製集過程
- 在主機A上面
- mkdir -p /opt/srv/mongodb/log
- mkdir -p /opt/srv/mongodb/key
- mkdir -p /opt/srv/mongodb/data/a1
- mkdir -p /opt/srv/mongodb/data/arbiter
- echo "sumongodb is the best blog" > /opt/srv/mongodb/key/a1
- echo "sumongodb is the best blog" > /opt/srv/mongodb/key/arbiter
- 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
- echo "sumongodb is the best blog" > /opt/srv/mongodb/key/b1
- chmod 600 /opt/srv/mongodb/key/*
- 啓動mongodb
- 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
- 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
- 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
- 初始化
- mongo --port 20011
- > 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'}]}
- > rs.initiate(config)
就在這時,報了這樣的錯誤:ERROR - couldn't initiate : need all members up to initiate.
可是我檢查完了所有的配置,都沒有問題啊,我又重新搭建了幾次,還是報同樣的錯誤!這時的我已經很煩了,於是決定從操作系統找原因。檢查了下系統時間date,結果確實發現點了什麼~我發現在主機A和主機B上的系統時間不一致啊!心想太好了,這下應該解決問題了吧。我又rs.initiate(config)一把,還是同樣的錯誤,剛剛燃起來的,又化成了灰燼!到底是哪裏的原因呢。我回過頭,仔細看了看錯誤日誌,終於發現了問題的所在,我發現居然在主機B數據庫上,沒有local這個庫,這是什麼原因呢。好嘛,我 ll了一下,查看了權限問題,結果讓我大吃一驚,都是些500的權限。我把權限改成root之後,重加載一下,問題就解決啦!
頓時心情愉悅了!!!!!!!!