什麼是資料複製?

資料複製是指刻意將相同的資料儲存在多個站點或伺服器中。公司基於幾個原因而複製資料,像是它允許資料在某部伺服器停機或伺服器流量過大的情況下仍然順暢可用,讓使用者能夠始終如一地存取資料,同時不會干擾或減慢其他使用者的存取速度。在雲端應用程式方面,資料複製則允許您存取本地資料庫的資料副本,其性能比透過雲端應用程式的 API 存取資料要有效率得多,這對於分析和資料科學特別有用。資料複製還可以讓您避免某些雲端應用程式對於 API 的交易次數限制和節流。

資料複製圖

資料複製與普通備份不同,它的功能更多。我們將做為資料來源的伺服器稱為發佈者,做為資料複製目的地的伺服器稱為訂閱者。在資料複製中,於發佈者上完成的交易會與訂閱者同步並自動更新資料,因此發佈者上的任何資料更改都會自動反映在訂閱者中。

複製的內容可以是完整複製或部分複製。在完整複製的情況下,所有來源資料都儲存到所有的複製站點。若是部分複製,則只會複製經常存取的資料,而將其他資料保留在來源系統中。

資料複製的類型

資料複製主要分為三種類型。

交易複製

在交易複製中,資料的更改很頻繁,將會在伺服器之間自動同步及分發這些更改。從發佈者到訂閱者的複製更改幾乎是即時完成的,它不僅是簡單地複製交易最終結果而已,它還會記錄交易的每一個步驟和更改發生的順序。

例如,以 ATM 交易為例,從發佈者到訂閱者的複製不僅是記錄最終餘額,還會記錄兩者之間進行的所有單次交易。交易複製的另一個關鍵特點是,雖然發佈者的資料更改會複製到訂閱者處,但反之不行。在預設情況下,訂閱者級別不會發生資料更改。

快照複製

快照複製是在特定的時間點於發佈者和訂閱者之間同步資料,在一次交易中將多個資料塊從發佈者移動到訂閱者處。快照複製的更新頻率不如交易複製那麼頻繁,它可以在交易複製之前進行,使兩端伺服器維持基本同步狀態,但它不會更新伺服器之間的每次交易,也不會更新資料的更改順序。

此過程用於同步在一段時間內發生變化的資料。例如,許多公司將客戶、聯絡人、商機等資料從雲端 CRM 複製到本地資料庫以製作報告,這可能是每 15 分鐘、每小時或每天進行一次,具體取決於資料更改的頻率。為了提高效率,複製過程可能會偵測發佈者所更改的資料並僅複製變動部分,而不是每次複寫週期時都拍攝完整快照。

合併複製

合併複製是一種稍微複雜的複製形式。發佈者的初始同步是快照複製,但是在這種形式中,它允許在發佈者和訂閱者級別進行資料更改,然後將被更新的資料發送到安裝於所有伺服器上的合併代理程式,由合併代理程式使用衝突解決演算法來更新和分發資料。

例如,如果員工使用筆記型電腦或手機(訂閱者),在線上編輯直接保存於雲端伺服器(發佈者)的文件,這將是一次交易複製,因為該文件會近乎即時地保存起來。但是,如果文件是先從雲端伺服器下載然後在筆記型電腦或手機上離線更新,那麼就會出現衝突,因為資料是在訂閱者端更新的。一旦使用者重新上線,它將透過一個合併代理程式,使用衝突解決系統來比較兩份文件,最後才更新發佈者上的文件。

合併複製用於使用者無法一直保持直接存取發佈者的多種場景,例如行動使用者可能在資料更新時離線的情況。它也可以用於多個訂閱者在不同時間存取和更新相同資料、並將其同步至發佈者或其他訂閱者的情況。它還可以用於多個訂閱者同時對來自發佈者的相同資料進行部分更新的情況。

資料複製網路的重要組成部分

除了發佈者和訂閱者之外,此網路還有一些成功所需的關鍵要素。

分發器

若要更改複製設定,首先需要配置分發器。分發器是複製網路中的一個伺服器,負責控制分發資料庫,並儲存所有複製的中繼資料和歷史記錄,此外也儲存用於複製的交易和快照。分發伺服器可以與發佈者伺服器(本地分發器)相同,甚至可以是遠端分發器,具體取決於複製的類型。

當單一分發器需要服務多個發佈者、或是需要在獨立電腦上進行處理以免影響發佈者上的資料移動時,通常會使用遠端分發器。這通常用於交易複製,因為其更新頻率很高,如果在同一部伺服器上執行,可能會影響分發器的處理速度。合併複製則可以透過本地分發器完成,因為複製和更新的頻率不如交易複製那麼頻繁,這也有助於使來自訂閱者的更新資料,在合併後最終能與發佈者保持同步。

複製代理程式

複製代理程式是複製的核心,視所安裝的複製類型而定。它們是實際執行各種任務的程式,例如偵測和更新發佈者與訂閱者資料庫、建立副本和解決衝突。複製代理程式通常儲存在分發器中,從分發伺服器執行的一些複製代理程式包括:

  • 快照代理程式
  • 分發代理程式
  • 合併代理程式
  • 日誌閱讀器代理程式
  • 佇列讀取器代理程式

資料複製的優勢

資料複製是提供對資料一致存取的好方法,它還增加讓多個使用者同時存取資料的能力。透過合併資料庫、並更新資料不完整的附屬資料庫,而能消除資料庫中的資料冗餘情形。有了資料複製,資料庫的存取速度自然可以加快許多。

資料複製的缺點

資料複製需要大量儲存空間和基礎設施來維護它,不僅複製成本高昂,而且需要相當複雜的措施來維護基礎設施以確保資料一致。它還會使軟體的更多部分暴露於隱私風險和安全漏洞之中。

複製的最佳實踐

設定好複製網路之後,遵循一些有效的管理實踐方法很重要:

  • 應該制定策略來定期備份資料庫,並應該定期執行測試以確保能夠還原這些備份。
  • 做為災難恢復的一部分,必須為所有的複製組件和重複性任務編寫指令碼,因為指令碼很容易儲存和備份,所以如果策略發生變化,就可以輕鬆地重新編寫各個組件的指令碼。
  • 必須確定會影響複製性能的因素,包括硬體、資料庫設計、網路設定、伺服器設定和代理參數等方面,然後針對應用程式所使用的工作負載,這些都需要正確配置並加以監控。

應監控以下五個參數以提高效率:

  • 複製所需時間
  • 複製效期
  • 可以同時發生的並行複製或複製活動的數量
  • 同步持續時間
  • 複製的資源消耗
    • 為了避免災難,建立性能閾值非常重要,這樣一來當達到閾值時,系統就能產生警告並向管理員發送警報,建立警報時還可以指定複製代理程式或複製流程應該採取什麼行動
    • 監控複製拓撲
    • 需要在發佈者和訂閱者處,針對交易複製和合併複製的資料進行定期驗證,以保持複製成功

資料複製不僅是建立資料備份而已,它既是資料管理的關鍵組成之一,但如果管理不當,它也可能變成昂貴又複雜的流程。成功關鍵在於針對您的需求,選擇正確的複製流程。