數據中心在運行中有可能遇到各種硬件、電力、網絡故障等問題,需要設計良好的系統來隔離,儘量減少對上層應用的影響,持續對外提供服務;一旦發生業務中斷,也應儘快恢復。通過主從備份設計,在主應用系統發生故障時,備機能夠及時接管應用,保持業務的連續性。
以如下這個基本的應用架構爲例,數據庫存在單點隱患,可以考慮利用MongoDB對主從的支持特性設計成Master-Slave部署,完成架構優化。(MongoDB的主從同步通過內網能達到最佳效率,如果只能通過公網進行主從同步,將會影響效率。)
可以直接使用MongoDB鏡像實現:先開通Master的鏡像,再開通Slave的鏡像,然後在MongoDB Slave中運行以下腳本進行主從配對:
1. 腳本存放路徑:/root/mongo_slave.sh
2. 配置方式(運行以下命令):bash /root/mongo_slave.sh
a) 進入交互方式,詢問是否繼續(這裏輸入yes):this server is master.Do you need change to slave?(yes/no)
b) 要求輸入遠程master ip地址,這裏需要填寫master的內網ip:Please enter your master ip?
i. 注意:填寫內網ip的時候,請確定主從鏡像的內網是否互通,及master的27017 mongodb服務端口是否打開,否則會導致主從失敗。否則會出現錯誤提示:“error : connect to <IP> 27017 (tcp) failed: Connection refused”
ii. 注意:這裏輸入公網ip也是可行,只不過主從通過內網同步才能達到最大效率,公網的傳輸速度會影響主從同步的效率。
c) 要求輸入master root密碼進行主從配置:
The authenticity of host '121.199.54.209 (121.199.54.209)' can't be established.
RSA key fingerprint is fe:17:21:c7:22:b7:10:90:91:85:76:ed:81:30:b8:7d.
Are you sure you want to continue connecting (yes/no)?
這裏輸入yes後,再輸入master鏡像的root密碼。
3. 自動重啓: 輸入正確的master root密碼,配置完成後會自動重啓mongodb。當出現“slave create successed”的字樣,說明配置成功。
4. 查看:less /alidata/log/mongodb/mongod.log
可以看到日誌中主從已經開始同步
2014-08-04T17:34:33.205+0800 [replslave] build index on: local.me properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "local.me" }
2014-08-04T17:34:33.205+0800 [replslave] added index to empty collection
2014-08-04T17:34:33.205+0800 [replslave] build index on: local.sources properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "local.sources" }
2014-08-04T17:34:33.206+0800 [replslave] added index to empty collection
2014-08-04T17:34:33.208+0800 [replslave] repl: syncing from host:10.171.228.64:27017
5. 主從配置後,從庫密碼:當成功運行/root/mongo_slave.sh腳本進行主從配置後,會重新初始化一次主庫的密碼,並且此時從庫的密碼跟主庫的密碼一致。即在從庫中/alidata/account.log中看到“And the main library the same password”的字樣。
查看MongoDB主從環境鏡像:>>主環境<< | >>從環境<<
————————
示例:將項目遷移至數據盤中
假如我們需要考慮將項目從系統盤遷移至數據盤中,整個流程參考如下:
(鏡像部署的項目一般存在系統盤的/alidata/server/mongodb/data目錄中)
1、停止mongodb:
/etc/init.d/mongod stop
2、mount /dev/xvdb1 /mnt/ #將第一塊數據盤掛載至mnt目錄下,也可以根據您自己的需要,掛載至其他數據盤中。
#mnt爲數據盤的掛載目錄,根據您的需求,數據盤也可以掛載其他目錄中。
mkdir -p /mnt/mongodb
3、cp -a /alidata/server/mongodb/data/* /mnt/mongodb/data/
4、vim /etc/mongod.conf編輯,將文件中以下內容:
dbpath=/alidata/server/mongodb/data
修改爲:
dbpath= /mnt/mongodb/data/
chown mongod.mongod /mnt/mongodb/data/ -R
5、啓動mongodb
/etc/init.d/mongod start
————————