簡介
對於許多現代應用程式而言,它們的後端是使用分散式資料庫配置的。資料是使用資料庫伺服器的排列或叢集來儲存和處理,而不是依賴單一資料庫伺服器。分散式模型可以確保即使其中一個資料庫伺服器發生故障,資料仍然可以存取。然而,分散式方法引入了一個問題,即如何確保分散式系統中的所有參與者都與終端使用者期望返回給他們資訊保持同步。這將我們引入本指南的主題:資料庫複寫。
在本指南中,我們將介紹什麼是資料庫複寫,並討論為您的分散式系統建置資料庫複寫流程的主要優點。
什麼是資料庫複寫?
資料庫複寫是在透過網路連線的多部機器上維護資料副本的過程。這個過程可以視覺化如下,其中主導資料庫將其資訊發送給從屬資料庫以進行複寫
此圖片顯示了一種特定類型的資料庫複寫架構,但複寫也可以透過不同的方式完成。主要目標始終相同,即在不同位置保持多個相同的最新資料副本。
資料庫複寫的優點
正如簡介中簡要提及的那樣,人們想要擁有分散式資料庫並因此實作資料庫複寫有幾個原因。一些最常見的優點包括以下幾點
- 提高資料的可用性
- 提高資料存取速度
- 增強伺服器效能
- 完成災難復原的準備
- 改善分析
提高資料的可用性
複寫提高了資料的可用性,因為它可以防止依賴單點故障並喪失資料庫存取權限。如果發生某種技術故障、停電或任何其他可能影響該單點的情況,那麼您的應用程式將無法存取其正常運作所需的資料。
資料複寫透過跨多個節點儲存資料來增強系統的彈性和可靠性。如果一個節點發生故障,則還有另一個節點可以介入,其中包含完全相同的資料,以保持運作順暢。
提高資料存取速度
對於大型和小型組織而言,都可能有使用者位於全球各地。地理分散式資料庫複寫有助於確保組織中任何需要特定資料的使用者都可以及時且不會有太多延遲地取得資料。
將資料複寫到靠近資料存取位置的本地伺服器,可以為使用者提供更快的資料存取和查詢速度。如果一個組織在美國只有一個節點,那麼嘗試在歐洲提取資料的使用者在嘗試存取資料時可能會遇到延遲。在美國擁有叢集以及在歐洲擁有複寫叢集的組織將確保該使用者可以有效率地使用他們在需要時所需的資料。
增強伺服器效能
資料庫複寫還可以減少資料庫主要伺服器的負載。如果資料只能在單一伺服器上存取,則該伺服器將處理所有傳入資料庫的請求。透過複寫,該負載可以分散到分散式系統中的其他節點。由於所有節點都具有相同的資料副本,因此某些查詢可以由次要節點處理,而將主要節點留下來僅處理某些讀取或僅處理寫入。
將主要節點保留用於處理寫入操作可能是有益的,因為如果它處理所有讀取和寫入,可能會對伺服器的資源造成不必要的壓力。對於沒有太多操作進入資料庫的情況,從主要節點讀取可能是有意義的。但是,在擴展和成長時期,最佳實務是將任務委派到分散式系統中,而不是將所有負載都放在單一節點上。
完成災難復原的準備
在發生災難的情況下,複寫還可以確保復原遺失或損壞的內容。雖然副本本身不是備份,因為它們會持續套用變更,但它們可以是資料庫備份的目標。
例如,如果您想備份資料,您可以短暫關閉其中一個次要節點上的複寫,以取得一致性狀態的資料,在沒有更多寫入操作進入時備份資料,然後重新啟動複寫以趕上新的更新。副本為您提供了要針對災難復原的一致性資料快照,而不會中斷操作。
複寫促進災難復原準備的另一種方式是明確地將副本配置為延遲從屬者。此副本將以定義的時間延遲套用操作。這種延遲讓資料庫監控團隊可以注意到問題,並避免將來自損壞的主要節點的變更套用到副本。然後,他們可以關閉複寫,並擁有一個幾乎是最新的伺服器準備就緒並運作,以保持操作繼續進行。
這些方法增加了增強的資料保護層級,如果沒有資料庫複寫,則不會存在。
改善分析
與增強伺服器效能所帶來的優點類似,複寫允許專門為分析配置節點。透過在單一站點/節點外部擁有完全相同的資料副本,現在可以選擇使用專門用於對資料執行分析的次要節點。
這樣一來,處理寫入操作或其他大量讀取的任何節點也不會因處理來自資料庫使用者的分析查詢而感到壓力。例如,您的分析團隊正在提取資料以彙總過去一季的使用者成長報告,將擁有一個專用節點來處理,而不會對任何核心節點造成壓力。這提高了分析團隊體驗到的效能,並減輕了主要節點的不必要負載 — 所有這些都使用完全相同且最新的資料。
總結
對於成功的資料分散式系統而言,資料庫複寫是需要實作的重要流程。在本文中,我們簡要介紹了什麼是資料庫複寫,以及它為您新的或已有的應用程式帶來的優點。
資料庫複寫並非一體適用的流程,因此了解哪些優點對於您的團隊在配置時最重要非常重要。我們將採用已學習的優點,並在其他指南中討論最常見的資料庫複寫架構、方法和類型。
若要使用 Prisma Client 執行資料庫遷移,請使用 Prisma Migrate 工具。Prisma Migrate 分析您的結構描述檔案、產生遷移檔案,並將它們套用至目標資料庫。