關於 Cloud SQL 中的複製功能

複製功能可讓您建立 Cloud SQL 執行個體或內部資料庫的副本,並將工作卸載至副本。

簡介

使用複製功能的主要原因,是為了在不降低效能的情況下,擴大運用資料庫中的資料。

其他原因包括:

  • 在區域之間遷移資料
  • 在不同平台之間遷移資料
  • 將資料從內部資料庫遷移至 Cloud SQL

此外,如果原始執行個體發生損毀,系統會將備援機制升級。

在提及 Cloud SQL 執行個體時,複製的執行個體稱為「主要執行個體」,而副本則稱為「唯讀備用資源」。主要執行個體和讀取備用資源位於 Cloud SQL 中。

當您參照的是內部資料庫時,複製情況稱為「從外部伺服器複製」。在這種情況下,複製的資料庫是來源資料庫伺服器。位於 Cloud SQL 中的副本稱為 Cloud SQL 備用資源。此外,還有一個代表 Cloud SQL 中來源資料庫伺服器的執行個體,稱為「來源表示法執行個體」

在災難復原情況下,您可以升級備用資源,將其轉換為主要執行個體。這樣一來,您就可以使用該執行個體,取代位於停機地區的執行個體。您也可以升級副本,以取代損毀的執行個體。

Cloud SQL 支援下列備援機制類型:

您可以使用連接器強制執行,強制只使用 Cloud SQL Auth Proxy 或 Cloud SQL 語言連接器連線至 Cloud SQL 執行個體。在連接器強制執行的情況下,Cloud SQL 會拒絕直接連線至資料庫。如果執行個體已啟用連接器強制執行,您就無法為該執行個體建立唯讀備用資源。同樣地,如果執行個體有唯讀備用資源,就無法為該執行個體啟用連接器強制執行。

您也可以使用資料庫移轉服務,從來源資料庫伺服器持續複製資料至 Cloud SQL。注意:Cloud SQL 允許使用者使用 PostgreSQL 的邏輯複製功能管理自己的複製作業。

Cloud SQL 不支援兩部外部伺服器之間的複製作業。

唯讀備用資源

您可以使用唯讀備用資源,從 Cloud SQL 執行個體卸載工作。讀取備用資源是主要執行個體的精確複本。主要例項的資料和其他變更會在讀取/寫入複本上以近乎即時的方式更新。

唯讀備用資源僅供讀取,無法寫入。唯讀備用資源會處理查詢、讀取要求和分析流量,進而減少主要執行個體的負載。

您可以直接使用複本的連線名稱和 IP 位址連線至複本。如果您使用私人 IP 位址連線至副本,則不需要為副本建立額外的 VPC 私人連線,因為連線會從主要執行個體繼承。

如要瞭解如何建立唯讀備用資源,請參閱「 建立唯讀備用資源」一文。如要瞭解如何管理唯讀副本,請參閱「 管理唯讀副本」。

最佳做法是在主要執行個體上使用 HA 時,將唯讀備用資源放在與主要執行個體不同的區域。這可確保在含有主要執行個體的區域發生中斷時,讀取用副本仍可繼續運作。詳情請參閱「高可用性總覽」。

選擇合適的機器類型

唯讀備用資源的 vCPU 數量和記憶體可以與主要執行個體不同。您應該監控執行個體的指標,例如 CPU 和記憶體用量,確保複本執行個體的大小能配合其工作負載,尤其是當複本執行個體小於主要執行個體時。大小不足的複本執行個體較容易發生效能不佳的情況,例如經常發生記憶體不足 (OOM) 事件。

唯讀備用資源的儲存空間容量

當主要執行個體的大小調整時,系統會視需要調整所有唯讀備用資源的大小,讓這些備用資源的儲存空間容量至少與更新後的主要執行個體一樣大。

當唯讀備用資源的機器類型記憶體低於主要執行個體時,對 max_connections 標記的影響

在 PostgreSQL 執行個體上,如果您未將 max_connections 標記設為所選值,Cloud SQL 會根據執行個體的記憶體量自動設定。詳情請參閱「支援的標記」。PostgreSQL 規定 max_connections 的值在讀取用副本中一律至少與主要執行個體相同。因此,如果唯讀備用資源的記憶體少於主要執行個體,且您未設定 max_connections 標記,則該備用資源可能會根據主要執行個體的大小繼承較大的 max_connections 值。在這種情況下,如果您依賴 max_connections 設定來限制複本執行個體的連線數量,由於值相對於執行個體的機器類型過高,可能會造成複本執行個體超載。如要避免這種情況,請執行下列任一操作:

  1. 將複本執行個體的大小調整為較大的機器類型。
  2. 設定用戶端應用程式,將連線數量限制在小於 max_connections 的值。
  3. 將主要執行個體和備援執行個體的 max_connections 旗標設為適當值。

使用唯讀備用資源的雜湊索引作業

在 PostgreSQL 9.6 中,雜湊索引作業不會使用預先寫入記錄。Cloud SQL 在 PostgreSQL 10 下只有一個可用版本。這項資訊已記載於 PostgreSQL 發布頁面上的黃色警告方塊中。這也適用於 Cloud SQL 唯讀備用資源。

由於雜湊索引更新不會在 PostgreSQL 9.6 下傳播至讀取用副本,因此副本無法使用這些更新。解決方法是避免使用唯讀備用資源,或升級至主要的 PostgreSQL 版本 (10 以上)

跨地區唯讀備用資源

跨區域複製功能可讓您在主要執行個體所在的不同區域中建立唯讀備用資源。建立跨區域唯讀備用資源的方式,與建立區域內備用資源相同。

跨區域備用資源:

  • 將副本提供給靠近應用程式所在區域的用戶,以改善讀取效能。
  • 提供額外的災難復原功能,以防區域性故障。
  • 讓您將資料從一個區域遷移到另一個區域。

如要進一步瞭解跨區域備用資源,請參閱「推送備用資源,以進行區域性遷移或災難復原」。

連鎖唯讀備用資源

階層式複製功能可讓您在相同或不同區域的其他唯讀備用資源下建立唯讀備用資源。以下是使用階層式複本的用途:

  • 災難復原:您可以使用唯讀備用資源的串聯式階層,模擬主要執行個體及其唯讀備用資源的拓樸結構。在服務中斷期間,系統會將您選取的唯讀備用資源升級為主要執行個體,而新主要執行個體下的唯讀備用資源會繼續複製,並可供使用。
  • 改善效能:將複製工作卸載至多個唯讀備用資源,減輕主要執行個體的負擔。
  • 擴充讀取作業:您可以新增更多備用資源,以便分擔讀取負載。
  • 降低成本:您可以使用單一階層式複本,並在其他區域進行跨區域複製,藉此降低網路成本。

術語

  • 層疊備用資源:可具備專屬備用資源的唯讀備用資源。
  • 層級:您可以在串聯式備用資源階層中建立備用資源層級。舉例來說,如果您在執行個體中新增四個備份,這些備份就會位於同一層級。
  • 同層次的執行個體:從同一個主要執行個體複製的多個備用資源。在複本階層中,同層的複本為同胞複本。一個備份可以正式擁有八個兄弟姊妹。
  • 葉節點備用資源:沒有任何備用資源的唯讀備用資源。在多層級複製階層中,分葉複本是最後一層。
  • 升級:將階層中任何層級的備份資源轉換為主要例項的動作。升級時,備用資源的串聯備用資源階層會保留。

設定層疊備用資源

串聯式備用資源可讓您在任何現有備用資源中新增唯讀備用資源。您最多可以新增四個副本層級 (包括主要執行個體)。當您將串聯式備用資源階層頂端的備用資源升級為主要執行個體時,該備用資源就會成為主要執行個體,而其串聯式備用資源會繼續複製。

如要規劃設定,您必須先設定讀取副本的用途。接下來兩個部分將說明災難復原和多區域複寫的設定。

災難復原

如要瞭解分層複本如何在服務中斷期間協助您快速復原,請考慮下列複製情境:

設定

顯示串聯式備用資源設定,其中串聯式備用資源位於另一個區域

服務中斷

顯示停機期間的推送或備援

推送

顯示備用資源的新執行個體

如果您想在災難復原設定中使用區域 B 的執行個體,且符合下列條件:

  • 與主要執行個體連結的相同區域中的備用資源 (備用資源 A)
  • 其他區域的備援機器 (連鎖備援機器) 連結至主要機器。

您可以在區域 B 的串聯式備用資源下建立唯讀備用資源。

在「中斷」分頁中,如果區域 A 發生中斷情形,階層備用資源就會升級為主要執行個體。該資料表已包含下方的唯讀備用資源,可縮短復原時間目標 (RTO)。

在「提升」分頁中,您會發現當分層複本提升時,其複本也會提升,並繼續在其下方複製。

多區域複製功能

分層備援的另一個用途,是將讀取容量以經濟實惠的方式分散到第二個區域。可以建立串聯式備用資源 C 和 D,從備用資源 B 複製資料。用戶端可將讀取查詢分散至備用資源 B、C 和 D,以減輕各備用資源的負載。跨區域網路流量的費用只會從主要執行個體傳送至備用資源 B 時產生一次。從 B 複製至 C 和 D 的複寫作業會使用區域內網路傳輸,這項服務不收費。

您可以使用串聯式備用資源建立最多四個階層,用於多區域複製:

主要資源 A → 備用資源 B → 備用資源 C 和備用資源 D

限制

  • 您無法刪除具有備用資源的備用資源。如要刪除備份,您必須從葉節點備份開始,然後逐層向上刪除。
  • 系統不支援循環區域依附元件。如要讓層疊備用資源的備援機制與主要執行個體位於相同區域,層疊備用資源也必須位於相同區域。

邏輯複寫

您可以使用 PostgreSQL 的邏輯複製功能,在 Cloud SQL 中設定自己的複製解決方案。邏輯複製是一種靈活的解決方案,可讓您:

  • 從主要執行個體複製到備用資源的標準複製作業
  • 只複製特定資料表或資料列
  • 跨 PostgreSQL 主要版本的複寫
  • 複製至非 PostgreSQL 資料庫
  • 變更資料擷取 (CDC) 工作流程,其中所有資料庫變更都會串流傳送至消費者

詳情請參閱「設定邏輯複寫」。該頁面會提供以下資訊:

  • 內建邏輯複製
  • pglogical 擴充功能

複製用途

以下是各類型複製作業的用途。

名稱 主要 備用資源 優點及用途 更多資訊
唯讀備用資源 Cloud SQL 執行個體 Cloud SQL 執行個體
  • 額外的讀取容量
  • 數據分析目標
跨區域唯讀備用資源 Cloud SQL 執行個體 Cloud SQL 執行個體
  • 額外的讀取容量
  • 數據分析目標
  • 額外的災難復原功能
  • 提高讀取效能
  • 在區域之間遷移資料
邏輯複寫 任何 PostgreSQL 執行個體 任何 PostgreSQL 執行個體或外部使用者
  • 從 Cloud SQL 外部進行複製
  • 跨 PostgreSQL 版本的複寫
  • 使用資料列和資料欄篩選器,只複製部分資料表中的資料。另請參閱 pglogical 2.1 和 PostgreSQL 10 中的邏輯複製
  • 複製至非 PostgreSQL 目的地 (變更資料擷取)

帳單

  • 唯讀備用資源的計費方式與標準 Cloud SQL 執行個體相同。資料複製作業不收費。
  • 跨區域唯讀備用資源的定價與在該區域中建立新 Cloud SQL 執行個體相同。參閱 Cloud SQL 執行個體定價,然後選取適當的區域。除了與執行個體相關聯的一般費用外,跨區域備用資源也會產生跨區域資料移轉費用,因為從主要執行個體傳送至備用資源的複製記錄會產生這類費用,詳情請參閱「網路輸出定價」。

Cloud SQL 唯讀備用資源快速參考

主題 討論
備份 您不能設定備用資源的備份。
核心和記憶體 唯讀備用資源的核心數和記憶體容量可能與主要執行個體不同。
刪除主要執行個體 刪除主要執行個體之前,必須將其所有唯讀備用資源推送至獨立執行個體,或刪除唯讀備用資源。
刪除備用資源 刪除副本時,主要執行個體的狀態不會受到影響。
停用預寫記錄功能 在您停用主要執行個體上的預寫記錄之前,必須推送或刪除它的所有唯讀備用資源。
容錯移轉 只有在備用資源是 DR 備用資源的情況下,主要執行個體才能容錯移轉至備用資源。唯讀備用資源在服務中斷期間也無法以任何方式容錯移轉。
高可用性 您可以透過唯讀備用資源,在備用資源上啟用高可用性
負載平衡 Cloud SQL 不提供備用資源之間的負載平衡。您可以選擇為 Cloud SQL 執行個體實作負載平衡。您也可以使用連線集區,透過負載平衡設定將查詢分散到各個複本,以提升效能。
維護期間 唯讀備用資源與主要執行個體共用維護期間。備用資源會遵循主要執行個體的維護設定,包括維護期間、重新排程和拒絕維護期間。在維護期間,Cloud SQL 會先更新所有唯讀備用資源,再更新主要執行個體。
多個唯讀備用資源 Cloud SQL 支援串聯式備用資源。因此,您最多可以為單一主要執行個體建立 10 個備用資源,並為這些備用資源建立備用資源,最多可建立四個層級 (包括主要執行個體)。
私人 IP 如果您使用私人 IP 位址連線至複本,則不需要為複本建立額外的 VPC 私人連線,因為複本會繼承主要執行個體的連線。
還原主要執行個體 存在備用資源時,您無法還原備用資源的主要執行個體。從備份還原執行個體,或對它執行時間點復原之前,您必須 推送或刪除它的所有備用資源。
設定 主要執行個體的設定會推送至備用資源,包括 postgres 使用者的密碼與使用者資料表的變更。
停止備用資源 您無法 stop 備用資源。您可以對其執行 restartdeletedisable replication,但無法像主要執行個體一樣停止。
升級備用資源 唯讀備用資源可能會隨時遇到造成服務中斷的升級。
使用者資料表 您無法變更備用資源。所有使用者變更都必須在主要執行個體上完成。

後續步驟