MongoDB 複製集模式Replica Sets
1、概述
複製集是一個帶有故障轉移的主從叢集。是從現有的主從模式演變而來,增加了自動故障轉移和節點成員自動恢復。
複製集模式中沒有固定的主結點,在啟動後,多個服務節點間將自動選舉產生一個主結點。該主結點被稱為primary,一個或多個從結點被稱為secondaries。primary結點基本上就是master結點,不同之處在於primary結點在不同時間可能是不同的伺服器。如果當前的主結點失效了,複製集中的其餘結點將會試圖選出一個新的主結點。
複製集模式的好處是,一切自動化。首先,複製集模式本身做了大量的管理工作,自動管理從節點,確保資料不會不一致。其次,主節點掛掉後,會自動判斷叢集中的伺服器並進行故障轉移,推舉新的主節點。
一個複製集叢集支援1-7臺伺服器,在一個複製集中各個伺服器資料保持完全一致。
在一個複製集叢集中,各個伺服器有以下幾種狀態:
Primary 主節點,一個複製集有且僅有一臺伺服器處於Primary狀態,只有主節點才對外提供讀寫服務。如果主節點掛掉,複製集將會投票選出一個備用節點成為新的主節點。
Secondary 備用節點,複製集允許有多臺Secondary,每個備用節點的資料與主節點的資料是完全同步的。
Recovering 恢復中,當複製集中某臺伺服器掛掉或者掉線後資料無法同步,重新恢復服務後從其他成員複製資料,這時就處於恢復過程,資料同步後,該節點又回到備用狀態。
Arbiter 仲裁節點,該類節點可以不用單獨存在,如果配置為仲裁節點,就主要負責在複本集中監控其他節點狀態,投票選出主節點。該節點將不會用於存放資料。如果沒有仲裁節點,那麼投票工作將由所有節點共同進行。
Down 無效節點,當伺服器掛掉或掉線時就會處於該狀態。複製集的從節點讀請求,也是在各個Driver層設定slaveOk的值來實現的。
2、示例
同樣的在一臺機器上實現此功能。
(1)建立叢集名字 yy
第一個節點:C盤,埠號:2222
第二個節點:E盤,埠號:3333
第三個節點:F盤,埠號:4444
(2)例項化Replica Sets
開啟任意一個mongod節點,登入後執行如下內容(這裡登陸C盤):
進行初始化:
呼叫rs.conf()檢視配置資訊
可以看到2222成了主節點,3333成了從節點,4444是仲裁節點:
呼叫rs.status()檢視狀態:
呼叫 rs.isMaster()檢視是否是主節點:
登入 3333埠檢視:
登入4444埠檢視:
(3)測試
在主庫中插入一節點,如下:
但此時在從庫中查詢報如下錯誤:
這是正常的現象,對於SECONDARY節點預設是不可讀的。因為SECONDARY是不允許讀和寫的,在寫多讀少的應用中,使用Replica Sets來實現讀寫分離。通過在連線時指定或者在主庫指定slaveOk,由SECONDARY來分擔讀的壓力,PRIMARY只承擔些操作。
解決方法:
第一種:在從節點設定slaveOk():
第二種:在主節點設定:
這樣就可以查詢了。
同樣,當主庫中刪除一條資料時,會同步到從庫。
如果把2222埠的服務停掉,則可以看到3333會成為主節點。
此時在3333上呼叫rs.status()可以看到了變化:
3333變成了主庫。
以上在一臺機器上配置了MongoDB的複製集模式。供大家參考。
相關文章
- Replica sets複製集的搭建
- mongodb複製集(replica sets)+分片(sharding)環境搭建MongoDB
- MongoDB搭建Replica Set複製集MongoDB
- 利用Mongodb的複製集搭建高可用分片,Replica Sets + Sharding的搭建過程MongoDB
- mongodb複製集(replica set)搭建及管理MongoDB
- mongodb replica sets 測試MongoDB
- Simple Automated Backups for MongoDB Replica SetsMongoDB
- MongoDB系列二:Replica Sets安裝與配置MongoDB
- MongoDB系列-解決面試中可能遇到的MongoDB複製集(replica set)問題MongoDB面試
- mongodb複製集MongoDB
- MongoDB 搭建複製集MongoDB
- MongoDB複製集原理MongoDB
- mongodb複製集搭建MongoDB
- MongoDB學習4:MongoDB複製集機制和原理,搭建複製集MongoDB
- 【Mongodb】 可複製集搭建MongoDB
- 【Mongodb】分片加複製集MongoDB
- 【Mongodb】往分片複製集新增複製成員MongoDB
- MongoDB學習之複製集MongoDB
- docker 下部署mongodb Replica Set 叢集DockerMongoDB
- MongoDB複製集資料同步流程MongoDB
- mongoDB研究筆記:複製集概述MongoDB筆記
- mongodb叢集shard_replica的搭建方法MongoDB
- mongodb6.0.13 搭建複製集PSAMongoDB
- MongoDB系列三:Replica Sets在生產環境中安裝配置的注意事項MongoDB
- 02 . MongoDB複製集,分片集,備份與恢復MongoDB
- MongoDB原理:複製集狀態同步機制MongoDB
- MySQL複製命令slave被REPLICA命令取代MySql
- 和麵試官這樣吹MongoDB 複製集!MongoDB
- Mongodb 配置複製集,並啟用安全校驗MongoDB
- 【Mongodb】分片複製集環境新增新的分片MongoDB
- mongodb複製+分片MongoDB
- 【Mongodb】如何建立mongodb的replica setMongoDB
- Kubernetes Replica Sets 和 Kubernetes Replica Controller的區別Controller
- mongodb 3.0 replica set 配置MongoDB
- Mongodb主從複製/ 副本集/分片叢集介紹MongoDB
- mongoDB研究筆記:複製集故障轉移機制MongoDB筆記
- mongoDB研究筆記:複製集資料同步機制MongoDB筆記
- MongoDB 複製機制MongoDB