複製功能可建立 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 位址連線至副本,則不必為副本建立額外的虛擬私有雲私人連線,因為連線會沿用自主執行個體。
如要瞭解如何建立唯讀副本,請參閱「 建立唯讀副本」。如要瞭解如何管理唯讀副本,請參閱「 管理唯讀副本」。
最佳做法是,在主要執行個體上使用高可用性時,將唯讀副本放在與主要執行個體不同的可用區。這麼做可確保在主要執行個體所在的區域發生中斷時,讀取副本仍可繼續運作。詳情請參閱「高可用性總覽」。
選取合適的機型
讀取副本的 vCPU 數量和記憶體容量可以與主副本不同。請監控執行個體的指標 (例如 CPU 和記憶體用量),確保副本執行個體的大小符合工作負載需求,尤其是副本執行個體小於主要執行個體時。如果副本執行個體過小,就更容易發生效能不佳的情況,例如頻繁出現記憶體不足 (OOM) 事件。
唯讀副本的儲存空間容量
調整主要執行個體大小時,系統會視需要調整所有唯讀副本的大小,確保其儲存空間容量至少與更新後的主要執行個體相同。
唯讀副本的機型記憶體小於主要執行個體時,對 max_connections 旗標的影響
在 PostgreSQL 執行個體上,如果您未將 max_connections 旗標設為所選值,Cloud SQL 會根據執行個體的記憶體量自動設定該旗標。詳情請參閱支援的旗標。PostgreSQL 規定讀取副本的 max_connections 值一律不得小於主要執行個體。因此,如果唯讀副本的記憶體小於主要副本,且您尚未設定 max_connections 旗標,唯讀副本可能會根據主要副本的大小,繼承較大的 max_connections 值。在這種情況下,如果您依賴 max_connections 設定來限制連至副本執行個體的連線數量,則可能會因為該值相對於執行個體的機型過高,而導致執行個體超載。如要避免這種情況,請採取下列任一做法:
- 將副本執行個體調整為較大的機型。
- 設定用戶端應用程式,將連線數限制為小於
max_connections的值。 - 將主要和副本上的
max_connections旗標設為適當值。
使用唯讀備用資源進行雜湊索引作業
PostgreSQL 9.6 的雜湊索引作業不會使用預先寫入記錄。 Cloud SQL 只有一個 PostgreSQL 10 以下版本。PostgreSQL 版本頁面的黃色警告方塊中,有這項資訊。這也適用於 Cloud SQL 唯讀副本。
由於雜湊索引更新不會傳播至 PostgreSQL 9.6 底下的讀取副本,因此副本無法使用這些更新。如要解決這個問題,您可以不使用唯讀副本,或升級至 PostgreSQL 主要版本 (10 以上)。
跨區域唯讀副本
跨區域複製功能可讓您在與主要執行個體不同的區域中建立唯讀副本。建立跨區域唯讀備用資源的方式,與建立區域內備用資源相同。
跨區域副本:
- 在應用程式區域附近提供副本,提高讀取效能。
- 提供額外的災難復原功能,防範區域性故障。
- 將資料從一個區域遷移到另一個區域。
如要進一步瞭解跨區域副本,請參閱「升級副本以進行區域遷移或災難復原」。
串聯式唯讀副本
連鎖複製功能可讓您在相同或不同區域的另一個唯讀備用資源下,建立唯讀備用資源。以下是使用串連副本的情境:
- 災難復原:您可以使用唯讀副本的串聯階層,模擬主要執行個體及其唯讀副本的拓撲。服務中斷期間,系統會將您選取的唯讀副本升級為主要執行個體,而新主要執行個體下的唯讀副本會繼續複製,並可供使用。
- 提升效能:將複製工作卸載至多個唯讀副本,減輕主要執行個體的負擔。
- 擴充讀取作業:您可以建立更多副本,分擔讀取負載。
- 降低成本:您可以在其他區域使用跨區域複製功能,搭配單一連鎖複本,降低網路費用。
術語
- 串連副本:可擁有專屬副本的唯讀副本。
- 層級:您可以在串聯副本階層中建立副本層級。舉例來說,如果您在執行個體中新增四個副本,這四個副本就會處於相同層級。
- 同層級執行個體:從相同主要執行個體複製的多個副本。同層級節點在副本階層中位於同一層級。一個副本最多可以有八個同層級副本。
- 葉副本:沒有任何副本的唯讀副本。在多層級複製階層中,分葉副本是最後一個層級。
- 升級:將階層中任何層級的副本轉換為主要執行個體的動作。升級後,備用資源的串聯式備用資源階層會保留。
設定連鎖備用資源
串聯式副本可讓您將唯讀副本新增至任何現有副本。最多可以新增四個層級的副本,包括主要執行個體。如果升級串聯式副本階層頂端的副本,該副本會成為主要執行個體,其串聯式副本則會繼續複製。
規劃設定時,您必須先確定唯讀副本的用途。接下來的兩個部分將說明災難復原和多區域複製的設定。
災難復原
如要瞭解連鎖副本如何協助您在服務中斷期間快速復原,請參考下列副本情境:
設定
服務中斷
推送
如要在災難復原設定中使用 B 區域的執行個體,且具備下列條件:
- 附加至主要執行個體的同區域副本 (副本 A)
- 其他區域的副本 (串聯副本) 會附加至主要副本。
您可以在區域 B 的串聯式副本下建立唯讀副本。
在「Outage」(服務中斷) 分頁中,如果區域 A 發生服務中斷,串聯副本會升級為主要執行個體。其下方已有唯讀副本,可縮短復原時間目標 (RTO)。
在「Promote」(升級) 分頁中,您會看到串連副本升級時,其副本也會升級,並繼續在該副本下複製。
多區域複製功能
另一個用途是將讀取容量以符合成本效益的方式分配至第二個區域。您可以建立串聯式副本 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 執行個體相同。資料複製作業不會產生費用。
- 跨區域唯讀副本的定價,與在該區域建立新的 Cloud SQL 執行個體相同。請參閱 Cloud SQL 執行個體定價,然後選取適當的區域。除了與執行個體相關的一般費用外,跨區域副本還會產生跨區域資料移轉費用,用於從主要執行個體傳送至副本執行個體的複製記錄,詳情請參閱「網路輸出定價」。
Cloud SQL 唯讀副本快速參考指南
| 主題 | 討論 |
|---|---|
| 備份 | 您無法在副本上設定備份。 |
| 核心和記憶體 | 唯讀副本使用的核心數量和記憶體容量,可以與主要執行個體不同。 |
| 刪除主要執行個體 | 您必須先將所有唯讀副本升級為獨立執行個體,或刪除唯讀副本,才能刪除主要執行個體。 |
| 刪除副本 | 刪除副本不會影響主要執行個體的狀態。 |
| 停用預寫記錄功能 | 如要停用主要執行個體的預寫記錄,必須先升級或刪除所有讀取副本。 |
| 容錯移轉 | 主要執行個體只能容錯移轉至災難復原副本。服務中斷期間,唯讀副本無法以任何方式進行容錯移轉。 |
| 高可用性 | 唯讀副本可讓您在副本上啟用高可用性。 |
| 負載平衡 | Cloud SQL 不提供副本之間的負載平衡功能。您可以選擇為 Cloud SQL 執行個體實作負載平衡。您也可以使用連線集區,透過負載平衡設定將查詢分配到各個副本,提升效能。 |
| 維護期間 | 唯讀副本與主要執行個體共用維護期間。副本會沿用主要執行個體的維護設定,包括維護期間、重新排程和拒絕維護期。維護期間,Cloud SQL 會先更新所有唯讀副本,再更新主要執行個體。 |
| 多個唯讀副本 | Cloud SQL 支援串聯式副本。因此,單一主要執行個體最多可建立 10 個副本,且這些副本也能建立副本,包括主要執行個體在內,最多可達四個層級。 |
| 私人 IP | 如果使用私人 IP 位址連線至副本,則不必為副本建立額外的虛擬私有雲私人連線,因為副本會沿用主要執行個體的連線。 |
| 還原主要執行個體 | 如果副本存在,就無法還原副本的主要執行個體。從備份還原執行個體或執行時間點復原作業前,您必須 升級或刪除所有副本。 |
| 設定 | 主要執行個體的設定會套用至副本,包括 postgres 使用者的密碼和使用者資料表的變更。 |
| 停止副本 | 您無法stop副本。您可以restart、delete或disable replication,但無法像主要執行個體一樣停止。 |
| 升級副本 | 唯讀副本隨時可能中斷升級。 |
| 使用者資料表 | 您無法變更副本。所有使用者變更都必須在主要執行個體上完成。 |
後續步驟
- 瞭解如何建立唯讀副本。
- 瞭解如何設定高可用性的執行個體。
- 瞭解進階災難復原 (DR)