這是去年寫的一篇文檔,最近突然發現并沒有發不出來,是以現在補上,希望能對某些朋友有所幫助。因為當時記錄時沒有截圖,是以這裡看起來可能就比較單調。
一、基本環境:
mongdb3.0.5資料庫
spring-data-mongodb-1.7.2.jar
mongo-java-driver-3.0.2.jar
linux-redhat6.3
tomcat7
二、搭建mongodb副本集:
1、 分别在三台linux系統機上安裝mongodb,(為避免和機器上原有的mongodb端口沖突,這裡設為57017):
192.168.0.160
192.168.0.211(192.168.0.33上的虛拟機)
192.168.0.213(192.168.0.4上的虛拟機)
每個mongodb的安裝這裡就不細說了,可以參考我的安裝方面的文檔,注意先不要更改使用者驗證方式。另外,這裡如果沒有三台機,也可以隻用一台機開三個端口,同時準備三個資料存儲目錄。
2、 以副本集的方式啟動三個mongodb:
隻是在單機mongodb啟動的基礎上加入副本集參數—replset,例如啟動160的:
其中,reptest是指定的副本集名稱,另外兩台機也也要和這個一樣。如:
3、 在任意一台機上配置副本集,這裡在160上配置:
(1)、進入160上的mongo sehll(資料操作界面):
(2)、切換到admin資料庫:
(3)、配置副本集:
(4)、加載副本集配置檔案:
(5)、檢視副本集狀态:
正常情況下可以看到160會是主伺服器,顯示primary,如果是,就直接進行以下操作,如果不是,就切換到primary上進行以下操作(換到另一個mongo);
(6)、增加使用者:
(7)、更改使用者驗證方式:
(8)、删除使用者:
(9)、重建立立使用者(系統中和上邊建立的使用者驗證方式不一樣):
(10)、關閉三個mongodb:
(11)、在160的資料庫的data目錄中建立keyfile檔案:
(12)、給keyfile檔案設定600權限(必須設定600權限):
(13)、把這個keyfile檔案上傳到另外兩台機上mongodb的data目錄中:
(14)、在mongodb.conf檔案中加入keyfile,例如160:
(15)、重新啟動mongodb,使用replset和auth參數:
(16)、在priority中設定副本內建員的優先級,給160設定最高優先級,優先級預設都是1:
這樣的話,隻要160的mongodb是開着的,那麼主伺服器就會是160
三、spring中連接配接副本集的配置:
隻需要配置一個ip,就會自動切換。使用者驗證格式:username:password@dbname。
四、java中連接配接副本集的代碼:
使用者驗證格式是:username,dbname,password