Mongodb叢集——master/slave
來源:互聯網
上載者:User
叢集的配置 (本測試放於同一台機器進行配置,所以IP地址一樣,如果是在不同的伺服器上更換IP便可以)
1、目錄結構 拷貝兩份mongodb到/home/scotte.ye/mongo1和/home/scotte.ye/mongo2
2、開啟mongodb
主: #cd /home/scotte.ye/mongo1/bin #./mongod --master -port=10111 -dbpath=/home/data/10111 -nohttpinterface & # 這樣主伺服器就開啟了,幾個關鍵參數的說明(當然也可以自己查看協助,./mongod --help): --master:標識當前開啟的mongodb是作為主伺服器的 -port:當前伺服器的監聽服務連接埠。預設27017 -dbpath:批當前程式啟動並執行日誌儲存路徑。預設/data/db。注這個路徑mongodb不人自己建立,所以一定要自己手工來建立,否則程式不能正常啟動。 -nohttpinterface:不開啟網頁介面,也就是不能通過網頁的形式查看伺服器運行狀態。預設是會在28017連接埠開啟一個網頁服務提供使用者查看伺服器狀態。因為當前都在同一個機器上,所以如果開啟這個兩個會產生衝突,所以不能開啟。
從: #cd /home/scotte.ye/mongo1/bin #./mongod --slave --source=192.168.35.106:10111 -port=10112 -dbpath=/home/data/10112 -nohttpinterface & # 這是開啟一個從伺服器,多個從也是按相同的方式來開啟。幾個關鍵的參數說明: --slave:指明當前開啟的為從伺服器。 --source:標明當前從伺服器要串連的主伺服器的連接埠和IP 其它參數同主,所以不再贅述。
叢集特點
1、只有主伺服器允許寫入,其它從伺服器只能讀取。 2、從伺服器啟動的時候馬上就會和主伺服器進行資料同步,所以不要擔心後起的從伺服器不會和主伺服器同步之前的資料,也不要我們自己手動操作。
叢集的主從切換
1、主機宕機,slave頂替 停止slave的mongod進程 刪除slave目錄下的local.*檔案 以--master的模式啟動B 2、切換Master/Slave(原來的master是正常啟動並執行) 用fsync命令暫停master的寫操作 //確保切換的時候主從資料同步 關閉slave服務 清空slave目錄下的local.*檔案 用--master重啟slave為master 在原來的slave也就是現在的master上面執行一次寫操作,產生oplog,擷取第一個同步點,因為slave與master的資料同步是通過oplog來實現的。所以這一步很重要,一定要完成。 關閉現master服務,同時slave也會產生新的local.*檔案 關閉原master,用現master上面的local.*檔案替換原master上面的local.*.因為檔案比較大,所以最好是壓縮拷貝 再用--master選項重啟新master服務 再用--slave的模式重啟原master服務,注意還要加一個-fastsync選項。這個和用fsync來暫停master有關 如果原來的master不是正常的,那麼這個時候可以跳過第一步,拷貝新master的檔案到原master重啟服務就可以了。
3、更新主伺服器位置
假設原來從主機的啟動方式如下: $ mongod --slave --source 192.168.35.106:10111 此時如果想更換主伺服器的地址,可以通過下面的方式: 重啟mongod服務,不要加-slave 和 -source選項:$ mongod 啟動shell執行如下操作: > use local switched to db local >db.sources.update({host:"192.168.356.106:10111"},{$set:{host:"192.168.35.106:10112"}}) 接著再重啟伺服器: $ ./mongod --slave --source=192.168.35.106:10112 $ # or $ ./mongod --slave