對於一個正在成長的mysql DBA來說,在剛剛開始接觸mongodb時,對於複製集,分片的概念太模糊了。於是從網上查看了一些資料,和相關mongodb的書籍,有了個大概的輪廓的瞭解。我更喜歡把專業知識生活化,對於mongodb的複製集,我們的必須品就是data,log,key!對於key來說,從英語上來解釋就是鑰匙,複製集好比一個大家庭,裏面的所有家庭成員要想進入這個大家庭,都需要相同的一把鑰匙。所以,我們的keyfile文件內容是一樣的,感覺這樣就能很好地理解這些生僻的概念了。家庭大了,事情也多,所以還有很多問題需要解決呢。我們的故事纔剛剛開始~~~~
1、初始化環境
- useradd mongo
- mkdir -p /opt/srv/mongodb/data
- mkdir -p /opt/srv/mongodb/log
- mkdir -p /opt/srv/mongodb/key
- chown mongo.mongo /opt/srv/*
- su - mongo
- mkdir -p /opt/srv/mongodb/data/a1
- mkdir -p /opt/srv/mongodb/data/a2
- mkdir -p /opt/srv/mongodb/data/a3
2、 生成keyfile
- echo "sumongodb is the best blog" > /opt/srv/mongodb/key/b1
- echo "sumongodb is the best blog" > /opt/srv/mongodb/key/b2
- echo "sumongodb is the best blog" > /opt/srv/mongodb/key/b3
- chmod 600 /opt/srv/mongodb*
3、啓動mongo
- mongod --replSet sumongodb --keyFile /opt/srv/mongodb/key/b1 --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/b2 --port 20012 --dbpath /opt/srv/mongodb/data/a2 --logpath /opt/srv/mongodb/log/a2.log --logappend --oplogSize 100 --rest --directoryperdb --maxConns 200 --fork
- mongod --replSet sumongodb --keyFile /opt/srv/mongodb/key/b3 --port 20013 --dbpath /opt/srv/mongodb/data/a3 --logpath /opt/srv/mongodb/log/a3.log --logappend --oplogSize 100 --rest --directoryperdb --maxConns 200 --fork
4、初始化
- mongo --port 20011
- > config = {_id: 'sumongodb', members: [{_id: 0, host: '127.0.0.1:20011'},{_id: 1, host: '127.0.0.1:20012'},{_id: 2, host:'127.0.0.1:20013'}]}
- > rs.initiate(config)
- > rs.status()