您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關mongodb副本集指的是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、什么是MongoDB副本集?
副本集是一組mongod維護相同數據集的實例,它提供了數據的冗余備份,并在多個服務器上存儲數據副本,提高了數據的可用性, 并可以保證數據的安全性;還允許您從硬件故障和服務中斷中恢復數據;實現自動故障轉移,還可以采用分布式方式讀取數據。
二、MongoDB副本集的原理?
mongodb的復制至少需要兩個節點。其中一個是主節點,負責處理客戶端請求,其余的都是從節點,負責復制主節點上的數據。mongodb各個節點常見的搭配方式為:一主一從、一主多從。
主節點記錄在其上的所有操作oplog,從節點定期輪詢主節點獲取這些操作,然后對自己的數據副本執行這些操作,從而保證從節點的數據與主節點一致。
通過在不同數據庫服務器上提供多個數據副本,復制可提供一定級別的容錯功能,以防止丟失單個數據庫服務器。
三、MongoDB副本集同步?
1.克隆除本地數據庫之外的所有數據庫。要克隆mongod掃描每個源數據庫中的每個集合,并將所有數據插入到這些集合的自己的副本中。版本3.4中已更改:初始同步會在為每個集合復制文檔時構建所有集合索引。在早期版本的MongoDB中,僅_id在此階段構建索引。初始同步在數據復制期間提取新添加的oplog記錄。確保目標成員在local 數據庫中有足夠的磁盤空間,以便在此數據復制階段的持續時間內臨時存儲這些oplog記錄。
2.將所有更改應用于數據集。使用源中的oplog,mongod更新其數據集以反映副本集的當前狀態。
初始同步完成后,成員從轉換 STARTUP2為SECONDARY。
四、部署MongoDB副本集的注意事項
·如果可能,請使用邏輯DNS主機名而不是IP地址,尤其是在配置副本集成員或分片集群成員時。邏輯DNS主機名的使用避免了由于IP地址更改而導致的配置更改。
·IP綁定 3.6版本之后才默認綁定地址為localhost,所以最好還是配置--bind-ip參數,如若綁定的非本地計算機,請確保已保護您的群集免受未經授權的訪問,最好考慮啟用身份驗證和 強化網絡基礎架構。
·確保網絡流量可以在集合的所有成員和網絡中的所有客戶端之間安全地傳遞。
1.建立虛擬專用網絡。確保您的網絡拓撲通過局域網路由單個站點內的成員之間的所有流量。
2.配置訪問控制以防止從未知客戶端到副本集的連接。
3.配置網絡和防火墻規則,以便僅在默認的MongoDB端口上允許傳入和傳出的數據包,并且僅在部署中允許。
·最好部署具有已啟用訪問控制的副本集。
·備份數據庫在備份時會出現一定的延遲。
·啟動MongoDB 需以副本集模式啟動。
·備份數據庫必須設置votes 值為1才擁有選舉成為Primary服務器的可能。
五、MongoDB副本集的需要哪些資源配置?
一臺安裝好MongoDB 的服務器 192.168.1.1
或者
三臺安裝好MongoDB 的服務器 192.168.1.1 192.168.1.2 192.168.1.3
網絡處于可使用狀態
六、部署MongoDB副本集
1. 設置配置文件
通過 --replSet 和 --bind_ip 命令行選項指定副本集名稱和ip綁定
語法:mongod --replSet "rs0" -- bind_ip localhost,<hostname ( s )| ip address ( es ) >
或者使用配置文件指定 replica set name 和 ip addresses
systemLog path: /var/log/mongodb/mongodb.log storage dbPath: /var/lib/mongo-res1 journal: enabled: true replication: replSetName : rs0 net : bindIp : localhost,<hostname(s)| ip address(es)>
配置參數含義:
replSet:設置Replica Set的name,在各個配置文件中,其值必須相同。
dbpath:MongoDB用于存儲數據的目錄,默認值是C:\data\db
bind_ip:指定ip
path:用于記錄mongod的日志數據
port:指定MongoDB監聽的端口,默認值是27017
然后要使用配置文件啟動MongoDB實例 ,使用 --config 選項指定配置文件的路徑。
mongod --config <path-to-config>
三個實例啟動完畢后,查看 ps -ef|grep mongo
2.使用 mongoDB shell 連接到其中一個 mongod 實例
mongo --host 192.168.1.1 --port 27017
3.啟動副本集
使用 rs.initiate() 來指定副本集的所有成員
rs.initiate({ _id : "rs0", members :[ { _id : 0 , host: "192.168.1.1:27017"}, { _id : 1 , host: "192.168.1.1:27019"}, { _id : 2 , host: "192.168.1.1:27019"} ] })
4.查看副本集配置
rs.conf()
5.查看副本集主副本信息
rs.status()
七、應用MongoDB副本集
嘗試關閉主節點
db.shutdownServer();
或者使用kill 端口的方式
然后再查看剩下的兩個副節點是否有一個成為新的節點
stateStr : "PRIMARY" 就是主節點
關于mongodb副本集指的是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。