分享到

引言

Article header

對於許多現代應用程式而言,其後端配置都使用了分散式資料庫。資料透過一組或一個數據庫伺服器叢集進行儲存和處理,而不是依賴於單個數據庫伺服器。分散式模型可以確保即使其中一臺資料庫伺服器發生故障,資料仍然可訪問。然而,分散式方法引入了一個問題,即如何確保分散式系統中的所有參與者都與終端使用者期望返回的資訊保持同步。這就引出了本指南的主題:資料庫複製。

在本指南中,我們將介紹什麼是資料庫複製,並討論為分散式系統設定資料庫複製過程的主要優勢。

什麼是資料庫複製?

資料庫複製 是在透過網路連線的多臺機器上維護資料副本的過程。這個過程可以像下面這樣視覺化,其中一個主資料庫將其資訊傳送給從資料庫進行復制

Database Replication

此圖片展示了一種特定型別的資料庫複製架構,但複製也可以透過不同的方式進行。主要目標始終相同,即在不同位置儲存多個最新的、相同的資料副本。

資料庫複製的優勢

正如引言中簡要提到的,有幾個原因會讓人希望擁有分散式資料庫並因此實現資料庫複製。一些最常見的優勢包括:

  • 提高資料可用性
  • 提高資料訪問速度
  • 提升伺服器效能
  • 實現災難恢復準備
  • 改進分析

提高資料可用性

複製 提高了資料的可用性,因為它避免了依賴單點故障並導致資料庫無法訪問。如果發生某種技術故障、停電或任何其他影響該單點的情況,您的應用程式將無法訪問其正常執行所需的資料。

資料複製透過在多個節點上儲存資料來增強系統的彈性和可靠性。如果一個節點出現故障,還有另一個節點可以接替,其上擁有完全相同的資料,以確保操作順利進行。

提高資料訪問速度

對於大大小小的組織來說,使用者可能遍佈全球。地理分佈的資料庫複製有助於確保組織中任何需要特定資料的使用者都能及時獲取資料,而不會有太多延遲。

將資料複製到靠近訪問地點的本地伺服器,可以為使用者提供更快的資料訪問和查詢速度。如果一個組織在美國只有一個節點,那麼在歐洲嘗試拉取資料的使用者在訪問時可能會遇到延遲。一個在美國擁有叢集並在歐洲擁有複製叢集的組織將確保該使用者在需要資料時能夠高效地使用所需資料。

提升伺服器效能

資料庫複製還可以減少資料庫主伺服器的負載。如果資料只能在單個伺服器上訪問,那麼該伺服器將處理所有進入資料庫的請求。透過複製,這種負載可以分散到分散式系統中的其他節點。由於所有節點都具有相同的資料副本,因此一些查詢可以由輔助節點處理,而主節點只處理某些讀取或只處理寫入。

將主節點保留用於處理寫入操作可能會非常有益,因為如果它處理所有讀取和寫入操作,可能會給伺服器資源帶來不必要的壓力。從主節點讀取對於資料庫操作量不大的情況可能是有意義的。然而,在擴充套件和增長時期,最佳實踐是將任務委託給分散式系統,而不是將所有負載都放在單個節點上。

實現災難恢復準備

在發生災難的情況下,複製還能確保丟失或損壞的資料得到恢復。雖然副本本身不是備份(因為它們會持續應用更改),但它們可以成為您資料庫備份的目標。

例如,如果您想備份資料,可以暫時關閉其中一個輔助節點上的複製,以獲取一致狀態的資料;在沒有更多寫入操作傳入時備份資料;然後重新啟動複製以趕上新的更新。副本為您提供了一致資料的快照,可以用於災難恢復,而不會中斷操作。

複製促進災難恢復準備的另一種方法是,明確地將一個副本配置為延遲跟隨者。該副本將以定義的時間延遲應用操作。這種延遲允許資料庫監控團隊發現問題,並避免將損壞主資料庫的更改應用到副本。然後他們可以關閉複製,並擁有一個基本最新的伺服器,準備好執行以保持操作進行。

這些方法增加了更高一層的資料保護,這是沒有資料庫複製就無法實現的。

改進分析

與提升伺服器效能的優勢類似,複製允許專門為分析分配節點。透過在單個站點/節點之外擁有精確的資料副本,現在可以選擇一個專門用於對資料進行分析的輔助節點。

這樣一來,任何處理寫入操作或其他繁重讀取的節點就不會因處理來自資料庫使用者的分析查詢而承受壓力。例如,您的分析團隊(他們會拉取資料來編寫上一季度的使用者增長報告)將擁有一個專門的節點進行工作,而不會給任何核心節點帶來壓力。這既提高了分析團隊的效能,又減輕了主節點不必要的負載——所有這些都基於完全相同且最新的資料。

總結

資料庫複製是成功實現分散式資料系統的重要過程。在本文中,我們簡要介紹了什麼是資料庫複製以及它為您的新應用或現有應用帶來的優勢。

資料庫複製並非一勞永逸的過程,因此在配置時瞭解哪些優勢對您的團隊最重要至關重要。我們將在後續指南中,結合已瞭解的優勢,討論最常見的資料庫複製架構、方法和型別。

關於作者
Alex Emerich

Alex Emerich

Alex 是一個典型的愛觀鳥、愛嘻哈的“書蟲”,也喜歡寫關於資料庫的文章。他目前居住在柏林,在那裡可以看到他像利奧波德·布魯姆(Leopold Bloom)一樣漫無目的地在城市中行走。
© . This site is unofficial and not affiliated with Prisma Data, Inc.