[MongoDB]Replica(副本集)
Replica
- 將Database的資料複製於多個 Database。
- 當其中使用的Database故障時,則自動切換到其中正常的Database,不用特別設定故障要切到哪個Database。
- 跟主從複製的差別在於,主從需要對每個Database設定Master跟Slave的關係。
情境
- 自定義1個Database組合成3個Replica
實作操作如下
1.建立3個Mongod
- 語法解析 mongod.exe --dbpath C:\replicaDataA1 --Port 新建的DBPort --replSet 自定義副本集名稱(同一個的副本集都要一樣名稱)/localhost:複製至目標的Port
-
命令語法如下
1: $mongod.exe --dbpath C:\replicaDataA1 --port 10000 --replSet
2: blort/localhost:10001
1: $mongod.exe --dbpath C:\replicaDataA2 --port 10001 --replSet
2: blort/localhost:10000
1: $mongod.exe --dbpath C:\replicaDataA3 --port 10002 --replSet
2: blort/localhost:10001
- 有發現 第三個 語法有異樣嗎,明明 要複製到port 10000、10001,但這邊卻只設定10001。因為10001已經有設定置10000,所以只須Replica到其中一個就可以了。
- 以上三個語法跑完再去檢查錯誤即可。因為是相互連線的,所以當連線尚未建立完成會出現 無法連線至XXX的問題。
2.啟動Replica
-
語法解析
1: >db.runCommand(
2: {
3: "replSetInitiate":
4: {
5: "_id":"副本集名稱","members":
6: [
7: {
8: "_id":1,
9: "host":"服務器的地址:Port"
10: }
11: ]
12: }
13: }
14: )
-
命令語法如下
1: >db.runCommand(
2: {
3: "replSetInitiate":
4: {
5: "_id":"blort","members":
6: [
7: {
8: "_id":1,
9: "host":"localhost:10000"
10: },
11: {
12: "_id":2,
13: "host":"localhost:10001"
14: },
15: {
16: "_id":3,
17: "host":"localhost:10002"
18: }
19: ]
20: }
21: }
22: )
-
若是成功將顯示以下訊息
1: {
2: "info":"Config now saved locally.Should come online in about a minute.",
3: "ok":true
4: }
By-藍小伙