1. 程式人生 > >第五部分 架構篇 第十二章 MongoDB Replica Sets 架構(簡介)

第五部分 架構篇 第十二章 MongoDB Replica Sets 架構(簡介)

1、Replication簡介

MongoDB Replication即是在多個伺服器中同步複製資料,資料複製的目的為提供冗餘和提高資料的可用性,資料複製的操作即在不同的資料庫伺服器上儲存多份複製的資料集,以此來避免單機故障進而丟失資料,複製機制也允許你恢復硬體故障和服務中斷,進而起到資料的容災和備份作用。

在MongoDB中,一個複製集就是一組mongod例項,一個mongod例項作為primary也就是所謂的master服務,接收所有的寫操作,其他的mongod例項作為secondaries也就是所謂的slave服務,它們的業務來自於primary,以便於得到和primary相同的資料集。

1.1、Primary(master)

primary服務接收來自客戶端的所有些操作,一個複製集架構中僅僅只能有一個primary服務,因為僅僅只允許一個複製集的成員接收寫操作,複製集架構提供嚴格規定所有的讀必須來自primary,MongoDB通過oplog日誌來支援資料的變更。

以下是基於primary的複製集基礎架構圖:


1.2、secondaries(slave)

secondaries服務複製primary的主日誌(oplog)來對它們的資料集進行操作,Secondaries資料集反映的是primary資料集,如果primary服務不可達,Replica Set架構會自動選擇一個Secondaries來作為Primary,預設情況下,客戶端從Primary進行讀操作,然而客戶端可以直接傳送讀操作給一個Secondaries服務來獲取資料。客戶端從Secondaries服務讀取的資料不一定反映的是Primary的資料。

以下是基於Secondaries的複製集架構:


1.3、Arbiter(仲裁者) 基於上述的兩種架構,你可以可以在其中新增一個額外的mongod例項作為replica set架構的仲裁者(arbiter),arbiter不會持有一個數據集,arbiter僅僅在當primary不可達時,要選擇一個Secondary來作為primary的選舉中投票使用,如果你的replica set架構有很多的成員,新增一個arbiter在primary的初級選舉中會獲得更多的票數,Arbiter不需要專門的硬體來支援。 以下是新增Arbiter的Replica Set架構:
注意:一個arbiter將永遠都是一個arbiter,也就是說在一個Replica Set架構中一個仲裁者將永遠是一個仲裁者,一個Primary可以變成一個Secondary,一個Secondary在重新的選舉中也可以成為一個Primary。但是仲裁者在架構中不管發生都不能變化。
1.3.1、Replica Set Arbiter(複製集仲裁者) 在前面我們已經講到了一個Arbiter(仲裁者)不會持有資料集的備份,也不能成為一個Primary服務來接收客戶端的寫操作,Replica Set也許在選擇Primary有Arbiter(仲裁者)來增加選票,Aribter(仲裁者)允許複製集有不均勻的成員數量,它卻沒有像成員複製資料的開銷。 注意:不要在和Primary服務以及Secondary服務成員同一臺主機上執行一個Arbiter(仲裁者),僅僅新增一個Arbiter(仲裁者)作為一個Replica Set的固定成員,如果你新增一個Arbiter(仲裁者)作為一個Replica Set的臨時成員,這個Replica Set也許在選舉中造成投票不公平。 那麼怎麼在一個Replica Set架構中新增一個Arbiter(仲裁者)呢? Arbiters(仲裁者)是一個mongod例項,作為Replica Set架構的一部分,但是它不會持有資料集,Arbiter(仲裁者)參與Primary的選舉,以便打破選舉中的綁架關係,如果一個Replica Set有均勻的成員,新增一個Arbiter(仲裁者)需要有一些極少的必備條件,它不需要硬體的支援,你可以在一個應用服務或者監控主機上部署一個Arbiter(仲裁者)服務。 注意事項:
  • 不要在一個Replica Set架構的成員的機器上部署一個Arbiter(仲裁者)服務。
  • Arbiter(仲裁者)不儲存資料,但是當一個Arbiter(仲裁者)的mongod程序被新增到一個Replica Set架構中,Arbiter(仲裁者)會像其他任何一個mongod程序一樣開始啟動一個帶有滿容量的journal的資料檔案集合。
  • Arbiter允許在一個Replica Set中設定一個投票選舉的基數。如下圖架構所示:

1.3.2、新增一個Arbiter(仲裁者)
  • 建立一個仲裁者的資料目錄(如dbpath),mongod例項用這個目錄來儲存配置資料,該目錄不會儲存一個來自primary主日誌複製的資料集合。如下所示:
mkdir /data/arb
  • 開啟一個Arbiter服務,需要指定資料目錄和Replica Set名稱,如下所示:
mongod --port 30000 --dbpath /data/arb --replSet rs
  • 使用rs.addArb()方法將Arbiter服務新增到一個Replica Set,同時連線到Primary服務
rs.addArb("m1.example.net:30000")
此時便在m1.example.net主機上運行了一個埠在30000的Arbiter(仲裁者)服務。 1.3.3、(Security)安全 Authentication(認證) 當Arbiter執行在一個需要認證的Replica Set的架構中時,Arbiter(仲裁者)交換憑據對該組成員進行身份驗證,通過mongodb的加密認證程序,MongoDB認證交換加密的安全證書,此時Arbiter(仲裁者)服務需要一個key檔案去驗證Replica Set架構。 Communication(溝通) 在一個部署有Arbiter(仲裁者)的Replica Set架構中,僅僅只有Arbiter和其他成員的溝通,如選舉投票、心跳、和配置資料的這些資料中不進行加密。 注意:當然如果你的MongoDB使用SSL部署,MongoDB將加密Replica Set架構中所有成員的溝通,關於SSL的MongoDB中應用在後面的章節會依依列出。 -------------------------------------------------------------MongoDB系列博文更新--------------------------------------------------------------------------------------------

相關推薦

部分 架構 MongoDB Replica Sets 架構簡介

1、Replication簡介 MongoDB Replication即是在多個伺服器中同步複製資料,資料複製的目的為提供冗餘和提高資料的可用性,資料複製的操作即在不同的資料庫伺服器上儲存多份複製的資料集,以此來避免單機故障進而丟失資料,複製機制也允許你恢復硬體故障和服務中

部分 架構 十三 MongoDB Replica Sets 架構成員深入理解

儘管客戶端不能直接通過Secondary進行寫操作,客戶端能通過secondary進行資料讀取操作,一個secondary也可以在primary不可達的情況下轉換成primary,同時也可以自主制定一些配置來賦予secondary特殊功能:

python學習手冊4版 部分:模組 第二 模組:巨集偉藍圖

模組是最高級別的程式組織單元,它將程式程式碼和資料封裝起來以便重用。 每個py檔案是一個模組,匯入模組就可以使用其內部的變數。 模組的優點: 1.程式碼重用 2.物件名稱空間的劃分,物件包含方法/屬性/變數 3.實現共享服務和資料,如使用單例模式/配置檔案

Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 第二:四元數QUATERNIONS

directx height ebe beginning ++ tip osi 通過 假設 原文:Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 第二十二章:四元數(QUATERNIONS)

Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- :幾何著色器The Geometry Shader

enable 中心 functions vector 是我 符號 ref rect 可能 原文:Introduction to 3D Game Programming with DirectX 12 學習筆記之 --- 第十二章:幾何著色器(The Geometry Sha

強化學習RLAI讀書筆記Applications and Case Studiesalphago

強化學習(RLAI)讀書筆記第十六章Applications and Case Studies(alphago) 16.6 Mastering the Game of Go 16.6.1 AlphaGo 16.6.2 AlphaG

Scala入門到精通——第二節 高級類型

www 不同 out not cloneabl etag new 創建方式 技術分享 作者:搖擺少年夢 視頻地址:http://www.xuetuwuyou.com/course/12 本節主要內容 this.type使用 類型投影 結構類型

Linux學習之CentOS()----認識ext文件系統

rect code .cn 留言 cto 這也 文件創建 limit roo 認識ext文件系統 硬盤組成與分割 文件系統特性 Linux 的 EXT2 文件系統(inode) 與目錄樹的關系 EXT2/EXT3 文件的存取與日誌式文件系統的功能 Linux 文件系統的運行

、Linux虛擬機器管理

本節著重介紹virsh虛擬機器管理命令、建立快照、虛擬機器遷移 - virsh虛擬機器管理命令 virsh list ## 檢視正在執行的虛擬機器 virsh list --all

、Linux虛擬機器管理

本節重點介紹虛擬機器的安裝步驟及配置方法,我們預設你的物理機支援虛擬化,直接進入下面的安裝步驟: - 圖形化介面安裝方法 下面步驟列出虛擬機器安裝過程中比較重要的幾個步驟 [[email protected] ~ ] # virt-manager

RabbitMQ () 遠程過程調用RPC

false name const 計算 包含 而不是 true 希望 helper 在遠程計算機上運行一個函數並等待結果,我們通常叫這種模式為遠程過程調用或者RPC. 通過 RabbitMQ 進行 RPC 很容易,客戶端發送請求消息,服務器回復響應消息.為了接收響應,我們需

“全棧2019”Java第二:陣列詳解中篇

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第二十九章:陣列詳解(中篇) 下一章 “全

LNMP架構

linux12.1?LNMP架構介紹 12.2 MySQL 安裝《 MySQL 安裝》(1)下載 Mysql,解壓,挪動,移除之前的LAMP的mysqlrm -rf /usr/local/mysqlrm -rf /etc/init.d/mysqld cd /usr/local/srcwget h

、LNMP架構

size 名單 con proto 反向代理 asc -h 公司 所有 12.17 Nginx負載均衡 12.18 ssl原理 12.19 生成ssl密鑰對 12.20 Nginx配置ssl 12.21 php-fpm的pool 12.22 php-fpm慢執行日誌 12.

LNMP架構下預習筆記

12.17 Nginx負載均衡 配置檔案 upstream qq_com {     ip_hash;     server 61.135.157.156:80;     server 125.39.240.113:

LNMP架構上預習筆記

12.1 LNMP架構介紹 12.2 MySQL安裝 下載二進位制免編譯包,並解壓 cd /usr/local/src  wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-li

“全棧2019”Java:繼承與初始化詳解

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十二章:繼承與初始化詳解 下一章 “全棧2019”Java第五十三章:向上轉型和向下轉型

C++Primer版 習題答案 動態記憶體Dynamic Memory

12.1 b1包含4個元素; b2被銷燬。 12.2 strblob.h #ifndef STRBLOB_H_ #define STRBLOB_H_ #include <string> #include <initializer_list&g

.NET Core實戰專案之CMS 開發-Dapper封裝GURD及倉儲程式碼生成器實現

本篇我將帶著大家一起來對Dapper進行下封裝並實現基本的增刪改查、分頁操作的同步非同步方法的實現(已實現MSSQL,MySql,PgSQL)。同時我們再實現一下倉儲層的程式碼生成器,這樣的話,我們只需要結合業務來實現具體的業務部分的程式碼就可以了,可以大大減少我們重複而又繁瑣的增刪改查操作,多留點時間給生活

:FastDFS分散式檔案系統

資料下載 大綱     FastDFS架構包括Tracker server 和 Storage server 。客戶端請求Tracker server 進行檔案上傳、下載,通過Ttacker server 排程,最總