跳到內容

高可用性數據庫(HA DB)

數據庫管理系統RDM旨在提供高可用性和更長的正常運行時間。 RDM將在各種環境之間無縫複製和鏡像您的數據,為您提供幾乎實時訪問託管數據的功能,而無需停機。

什麼是數據庫複製?

數據庫複製是一種將數據從數據庫複製到一個或多個副本或副本的過程,通常是為了提高可訪問性或容錯能力。

有時使用術語“主動複製”和“被動複製”來表徵此過程的工作方式。根據Wikipedia的定義,主動複製是通過在每個副本上處理相同的請求來執行的。在被動複製中,每個請求都在單個副本上處理,然後將其狀態轉移到其他副本。

RDM的複制能力

Raima數據庫管理器 (RDM)支持這兩種技術;在Raima文檔中,主動複製僅稱為“複製”,而被動複製則稱為“鏡像”。在RDM的上下文中,鏡像將產生與原始數據庫相同的副本(逐字節),而復制將導致不同的副本。這些副本將包含從原始文件傳輸來的所有記錄,但是數據庫文件(或內存中)中記錄的物理組織可能會有所不同。此外,副本可能包含原始數據庫中從未存在的其他表或索引。或者它可能不包含原始數據庫中的某些表,因為RDM Enterprise Lite支持篩選的複制,其中僅複製指定的表。

“主動-主動”與“主動-被動”

在復制的上下文中,術語“主動-主動”和“主動-被動”也很常見,但是它們指的是與剛剛描述的概念不同的概念。主動-主動複製是指在兩個都正在主動更新的數據庫之間進行雙向數據複製,也稱為“多主複製”。主動-被動複製是指從正在主動更新的主數據庫到除複製過程之外未更新的從數據庫的單向複製。這也稱為“主從復制”。

在RDM中,複製始終是主從復制,並且是異步執行的。它可以採用以下兩種形式之一:

  1. 從一個RDM數據庫複製到另一個:主數據庫和從數據庫都是RDM數據庫,其中從數據庫是主數據庫的只讀副本。
  2. 從RDM數據庫複製到其他類型的數據庫,例如Microsoft SQL Server數據庫,Oracle數據庫,MySQL數據庫或RDM SQL數據庫。在這裡,從設備可能包含除從主設備複製的數據以外的其他數據,並且可能會被其他應用程序更新。但是,複製仍然是“單向的”,即僅將數據從RDM數據庫傳輸到從屬服務器,而不是相反。

嵌入式系統中復制的優化

在嵌入式系統的上下文中,第二種複制形式對於從多個嵌入式設備收集數據並將其全部存儲在同一台計算機中(可用於用戶查詢或報告)很有用。通常,存儲在嵌入式設備中的數據是從傳感器和其他連接的硬件實時獲取的,並且對時間高度敏感。任何可能阻止或減慢嵌入式設備更新的操作都是不可接受的。但是,無需太多的CPU成本,就可以將數據從嵌入式設備(異步)複製到基於PC的數據庫中,在該數據庫中,硬件功能更強大,對響應時間的要求也更低。

數據複製和鏡像之間的差異

在RDM中,複製和鏡像之間存在一些功能重疊,但是通常提供複製主要是為了提高可訪問性。通過在多個節點上維護同一數據的多個從屬副本,可以從主服務器上卸載某些工作負載。這將提高主數據庫中的更新性能,並允許在其他節點上更快地讀取數據,在這些節點上,應用程序可以訪問數據庫的本地從屬副本。與RDM對數據庫聯合的支持一起使用時,這允許您構建分佈式數據庫系統。應用程序可以在數據庫聯合中打開位於同一台計算機或不同計算機上的多個數據庫,並獲得數據的統一視圖,就好像它們都在同一數據庫中一樣。對複制和分佈式數據庫的支持使RDM成為高度可擴展的數據庫系統。

複製也是一種在處理器網絡上傳播配置數據的便捷方式。主數據庫可能包含系統的當前配置數據,並且可以通過多層結構將其複製到網絡上的其他節點。可以對每個節點進行編程,以發現可從中復制並連接到它的可用源。複製支持內存中數據庫和基於磁盤的數據庫,因此在此示例中,多層複製的源可以是從磁盤讀取的內存中數據庫,當每個節點啟動時,該數據庫將在整個系統中復製到內存中本地數據庫向上。

數據庫鏡像

鏡像數據庫是在不同位置創建數據庫的逐字節副本。鏡像不同於復製或備份數據庫,因為鏡像數據庫與原始數據庫同時(同步)更新,或者在原始數據庫更新後(異步)盡快更新。來自主服務器的頁面圖像將應用於從服務器,以實現鏡像。

鏡像的3個主要目的

  1. 維護數據庫的另一個副本以確保安全。備份副本可以是內存中的主數據庫的磁盤上副本。
  2. 將數據庫的讀取工作卸載到另一台計算機上。
  3. 準備在主計算機出現故障時將處理切換到另一台計算機。這通常被稱為高度可用數據庫。

高可用性和鏡像之間的區別

儘管通常在高可用性(HA)的上下文中考慮鏡像,但這並不是一回事。 HA不僅僅是數據庫方面的鏡像,因為HA包括檢測並響應系統中出現故障的組件,切換到備用組件(故障轉移)的能力。鏡像是高可用性系統中的組成部分, 維護數據庫的冗余副本.

RDM的鏡像能力

在Raima中,數據庫管理器(RDM)鏡像具有高度模塊化和靈活的體系結構,可以輕鬆地將RDM組件連接在一起,以在單個系統內或跨多個系統實現數據庫鏡像。鏡像組件都可以由應用程序通過已發布的API函數控制。
簡單來說,RDM鏡像由以下組件組成:

  1. 主數據庫–該數據庫正在由應用程序不斷更新。
  2. 從數據庫–這是主數據庫的只讀副本。
  3. 一種 數據庫服務器 控制對master數據庫的訪問。
  4. 數據庫服務器,控制對從數據庫的訪問。
  5. 鏡像代理,它從master數據庫發布更改的數據。
  6. 鏡像代理,訂閱來自組件#5的數據,並將該數據應用於其從屬數據庫。

在此列表中,組件1、3和5屬於主系統,而組件2、4和6屬於從屬系統。
實際上,由於以下任一原因,可能會有更多的組件:

  • 每個主數據庫可能有多個從數據庫。
  • 如果需要,數據庫服務器和鏡像代理可以處理多個數據庫。
  • 鏡像代理可以作為發布者或訂閱者連接到多個其他鏡像代理。
  • 鏡像可能是多層系統。

針對並行優化的架構

這種體系結構允許並行處理,並利用作為RDM事務處理的一部分自動生成的事務日誌,因此鏡像不會對RDM CPU的要求造成太大的開銷。

使用RDM鏡像-同步或異步

  • 使用同步鏡像時,每個主服務器僅允許一個從數據庫。當應用程序將事務寫入主數據庫時,提交將不會在主數據庫中完成,直到在從數據庫中完成。這意味著從服務器必須連接到主服務器,否則主數據庫中的事務將失敗。這也意味著跨Internet的同步鏡像是不切實際的。
  • 使用異步鏡像,每個主服務器允許多個從數據庫。從站不需要始終連接到主站。他們可能會斷開連接,然後在以後重新連接,以趕上之間的更新。在這種配置下,將事務寫入主數據庫的應用程序不會被阻塞,以等待從屬事務完成。

RDM組件的狀態可以由應用程序以編程方式確定,因此RDM鏡像可以內置到有效的HA系統中。該應用程序提供了HA系統的控制邏輯:確定是否需要故障轉移的能力,以及對故障轉移和故障回复的總體控制。 RDM鏡像組件提供了切換主服務器和從服務器角色的機制。

RDM通常用於 嵌入式系統,其中鏡像數據庫可以維護在內存中,也可以維護在與主數據庫位置不同的文件系統上。該解決方案需要相對較少的額外硬件。

在某些嵌入式系統中,RDM鏡像可用作將數據庫內容傳輸到外部系統(通常是PC系統)的機制。儘管PC軟件可以直接連接到嵌入式系統上的數據庫服務器,但這可能給嵌入式系統帶來不可預知的負擔,而鏡像的影響很小。在這種情況下,可以使用鏡像或複制。該選擇通常取決於從數據庫是要求是主數據庫的逐字節副本(鏡像)還是邏輯上等效(複製)。