升級叢集的主要伺服器版本

本頁面詳細說明 AlloyDB for PostgreSQL 的資料庫伺服器版本更新程序,並說明如何將資料遷移至與較新版 PostgreSQL 相容的叢集。

如要進一步瞭解如何建立叢集,請參閱「建立叢集及其主要執行個體」。

叢集和 PostgreSQL 版本相容性

建立 AlloyDB 叢集時,請選擇與叢集中的執行個體相容的 PostgreSQL 主要版本。預設值為 16。

AlloyDB 會在定期維護期間自動升級資料庫子版本。舉例來說,如果您建立的叢集相容於 16,AlloyDB 會將資料庫伺服器升級至 16 的最新次要版本。

不過,如要升級 PostgreSQL 版本的主要版本,您必須自行規劃、測試及執行升級作業。

您可以透過幾種方法升級叢集的主要版本:

  1. 建議使用的就地升級主要版本
  2. 使用檔案匯出資料的方式遷移資料
  3. 使用資料庫遷移服務

每種升級解決方案各有優缺點。請參閱下表,簡要比較各方法,協助您為自己的情境選擇合適的做法。

直接升級主要版本 以檔案為基礎匯出資料 使用資料庫移轉服務進行遷移
叢集 (包括讀取執行個體) 會升級至所選的較高主要版本。 檔案型匯出作業會移動資料庫的一次性快照。 資料庫遷移服務會在遷移程序中持續複製資料,降低新叢集遺失資料的機率。
在升級前階段,您可以繼續處理叢集工作。 應用程式會經歷較長的停機時間,從您匯出資料時開始。在新叢集完全運作之前,您無法在原始叢集中接受資料庫寫入作業。 當您想切換應用程式以使用新叢集時,應用程式的停機時間會縮短。
視結構而定,升級程序期間的停機時間大約為 20 分鐘以上。升級後,您可以使用相同的 IP 位址存取叢集。 您可以更精細地控管要匯出的資料,並選擇不遷移特定資料表或其他實體。 資料庫移轉服務會自動遷移執行個體中的所有資料庫,以及叢集中的所有執行個體。您無法選擇從遷移資料中排除特定資料表或檢視畫面。
叢集可以啟用 SSL 強制執行模式。 為進行遷移,資料庫移轉服務要求您在來源叢集上停用 SSL 強制執行模式。


下一節將詳細說明執行主要版本升級的程序,包括遷移資料。

直接升級主要版本

這樣一來,您就能順暢升級,不必設定任何其他叢集。詳情請參閱「就地升級資料庫主要版本」。

使用檔案型資料匯出功能遷移資料

如要使用與較高 PostgreSQL 主要版本相容的資料庫伺服器,您需要在相同區域中建立功能相同的叢集,然後將資料遷移至該叢集。

步驟如下:

  1. 建立叢集,並設定要使用的 PostgreSQL 主要版本相容性。在與目前叢集相同的地區中建立叢集。

  2. 設定新叢集,並使用與目前叢集設定相符的新主要版本:

    1. 視需要建立其他讀取集區執行個體。

    2. 視需要建立次要叢集。

      建立次要叢集時,您不需要指定 PostgreSQL 主要版本號碼。AlloyDB 會將主要叢集的 PostgreSQL 版本套用至所有次要叢集。

    3. 更新新叢集的資料庫旗標,使其符合目前叢集的旗標設定。

    4. 啟用應用程式所需的任何擴充功能。

  3. 使用 psqlpg_dump,將舊叢集的資料匯出至檔案。

  4. 將檔案中的資料匯入新叢集。

您的應用程式現在可以透過新的 IP 位址連線至新叢集的執行個體

使用資料庫移轉服務進行遷移

您可以使用資料庫遷移服務,將資料從 PostgreSQL 資料庫移至 AlloyDB 叢集。資料庫遷移服務不會提供專為 AlloyDB 資料來源設計的設定,但 AlloyDB 與 PostgreSQL 相容,因此您可以採用適用於一般 PostgreSQL 來源的設定。

這項遷移路徑並非就地升級,而是會建立 IP 位址不同的新叢集。建議您先複製叢集,然後執行測試遷移作業,確認應用程式是否與這種做法相容。

重要事項

準備透過資料庫移轉服務遷移資料前,請仔細考量下列限制,確保這個遷移路徑符合您的升級情境。

限制
  • 您必須在來源叢集上停用 SSL 連線。
  • 系統不支援使用 Private Service Connect 設定的 AlloyDB 執行個體。
  • 遷移期間,您無法對來源叢集執行執行個體更新或容錯移轉要求。這些作業可能會導致遷移工作失敗。
  • 從 PostgreSQL 遷移至 AlloyDB 的所有標準限制,都適用於這個情境。如需其他限制的完整清單,請參閱資料庫移轉服務說明文件中的「 已知限制」。
遷移作業準確度
系統不會遷移特定資料類型,例如大型物件。如需支援的資料完整清單,請參閱資料庫遷移服務說明文件中的「 遷移準確度」。
來源資料庫鎖定和停機時間

資料庫移轉服務會使用持續遷移功能,將資料移至 AlloyDB 叢集。這類遷移作業會建立初始資料傾印,因此來源資料庫表格會逐一短暫鎖定 (不到 10 秒)。

遷移完成後,您必須先停止對來源資料庫的所有寫入作業,才能將應用程式切換至新叢集。這項程序需要停機一段時間。如需更詳細的總覽,請參閱資料庫移轉服務說明文件中的「 持續遷移」。

複製限制

遷移工作進入變更資料擷取 (CDC) 階段後,資料庫移轉服務會持續複製寫入來源資料庫的新資料。

如果資料表沒有主鍵,系統只會在 CDC 階段複製 INSERT 陳述式。在 CDC 階段,如果對沒有主鍵的資料表執行任何 CREATEUPDATEDELETE 動作,則必須在目的地資料庫手動重新建立這些動作,以免資料遺失。

事前準備

  1. Enable the Database Migration Service API.

    Enable the API

  2. Make sure that you have the following role or roles on the project:

    • One of the following:
      • Cloud AlloyDB > Cloud AlloyDB admin
      • Basic > Owner
      • Basic > Editor
    • You must also have the compute.networks.list permission in the Google Cloud project you are using. To gain this permission while following the principle of least privilege, ask your administrator to grant you the Compute Engine > Compute Network User role (roles/compute.networkUser).
    • Database Migration admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      前往「IAM」頁面
    2. 選取專案。
    3. 按一下「授予存取權」
    4. 在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是 Google 帳戶的電子郵件地址。

    5. 在「Select a role」(選取角色) 清單中,選取角色。
    6. 如要授予其他角色,請按一下 「新增其他角色」,然後新增每個其他角色。
    7. 按一下 [Save]
  3. 確認您使用的 Google Cloud 專案中的虛擬私有雲網路已設定私人服務存取權,可連線至 AlloyDB。
  4. 決定要在哪個區域建立目的地叢集。所有 Database Migration Service 實體 (連線設定檔、遷移工作) 都必須與目的地叢集位於相同區域。
  5. 準備要連線至叢集的資料庫使用者,並在來源資料庫上執行遷移陳述式。這個資料庫使用者需要一組特定的權限和角色。 建議您 建立新的資料庫使用者,並指定該使用者專門執行遷移作業。
  6. 設定來源執行個體

    資料庫移轉服務需要特定設定,才能連線並將資料從來源叢集複製到新的目的地叢集。

    如要設定 AlloyDB 來源執行個體,請按照下列步驟操作:

    1. 在來源叢集的每個執行個體上 設定資料庫旗標。請使用下列值:
      旗標
      alloydb.logical_decoding 設為 on
      alloydb.enable_pglogical 設為 on
      max_replication_slots 這個標記會定義來源執行個體可支援的複寫時段數量上限。這個標記的最小值50

      使用下列公式計算最小值:

      (the number of databases in your instance) * (the number of simultaneous migration jobs you want to perform) + (slots reserved for table synchronization) + (the number of replication slots you currently use for your read replicas)

      假設有以下情況:

      • 來源中沒有唯讀副本。
      • 主要來源執行個體上有 30 個資料庫。
      • 您想為來源叢集建立 2 項遷移工作。
      • 您想使用 10 個時段進行資料表複製。
      在這種情況下,max_replication_slots 的數量必須至少為 70,計算方式為 30 * 2 + 10 + 0
      max_wal_senders 將此旗標設為至少比 max_replication_slots 值多 10,再加上您執行個體上已使用的寄件者數量。

      舉例來說,如果將 max_replication_slots flag 設為 70,且您已使用 2 個寄件者,則 max_wal_senders 至少應為 82 (計算方式為 70 + 10 + 2 = 82)。

      max_worker_processes 請將這個旗標設為至少等於執行個體中的資料庫數量,加上您已使用的 max_worker_processes 數量。

      舉例來說,如果來源執行個體上有 30 個資料庫,且未使用任何工作程序,請將這個旗標設為 30

    2. 在來源叢集中的每個執行個體上停用 SSL 強制執行模式

    設定來源資料庫

    您必須安裝 pglogical 擴充功能,並授予指定為執行個體中每個資料庫遷移使用者的資料庫使用者必要權限。

    如要設定資料庫,請按照下列步驟操作:

    1. 使用 psql 用戶端連線至預設 postgres 資料庫
    2. 執行下列指令來安裝 pglogical 擴充功能:

      CREATE EXTENSION IF NOT EXISTS pglogical;
      
    3. 授予遷移資料庫使用者所有結構定義的權限, information 結構定義和名稱開頭為 pg_ 前置字元的結構定義除外。執行下列陳述式:

      GRANT USAGE on SCHEMA SCHEMA_NAME to USER_NAME;
      GRANT SELECT on ALL TABLES in SCHEMA SCHEMA_NAME to USER_NAME;
      GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA_NAME to USER_NAME;
      

      更改下列內容:

      • SCHEMA_NAME:資料庫中現有結構定義的名稱
      • USER_NAME:您在「事前準備」一節中準備的資料庫使用者名稱

      針對資料庫中的每個結構定義 (information 結構定義除外),以及名稱開頭為 pg_ 前置字元的結構定義,重複執行這個步驟。您可以使用 \dn 中繼指令列出所有資料庫結構定義。

    4. 授予其餘必要權限。執行下列陳述式:

      GRANT USAGE on SCHEMA pglogical to PUBLIC;
      GRANT SELECT on ALL TABLES in SCHEMA pglogical to USER_NAME;
      ALTER USER USER_NAME with REPLICATION;
      

      USER_NAME 替換為您在「事前準備」一節中準備的資料庫使用者名稱。

    5. 連線至執行個體中的每個其他資料庫,然後重複步驟 2、3 和 4。

      • 您可以使用 \list 中繼指令,列出執行個體中的所有資料庫。

      • 您可以使用 \connect {database_name_here} 指令切換至其他資料庫,不必重設 psql 用戶端連線。

    6. 針對來源 AlloyDB 叢集中的每個執行個體重複執行這項程序。

    在資料庫移轉服務中執行遷移作業

    步驟如下:

    1. 為 AlloyDB 叢集 建立來源連線設定檔。請使用下列值:

      • 「資料庫引擎」:選取「PostgreSQL」
      • 主機名稱/IP:使用叢集主要執行個體的 IP 位址。
      • 使用者名稱/密碼:輸入您在「事前準備」一節中準備的資料庫使用者憑證。
      • 通訊埠:輸入 5432
      • 區域:選取目的地叢集所在的區域。
      • 加密類型:選取「無」
    2. 建立並執行遷移工作。

      您可以預先建立新的 AlloyDB 叢集,也可以在設定遷移工作時,讓資料庫移轉服務為您建立叢集。詳情請參閱資料庫移轉服務說明文件中的「移轉工作總覽」。

      如要讓資料庫移轉服務在設定遷移工作時建立目的地叢集,請按照「建立遷移工作,將資料遷移至新的目的地執行個體」程序中的步驟操作。

      如要在資料庫遷移服務外部建立目的地叢集,請按照「建立遷移工作至現有目的地執行個體」程序中的步驟操作。

    3. 當遷移工作狀態變更為「CDC」CDC時,請升級遷移工作。您可以在遷移總覽頁面查看遷移工作狀態。請參閱資料庫移轉服務說明文件中的「查看遷移工作」。

      這項操作會導致目的地叢集退出啟動程序模式 (也就是說,目的地 AlloyDB 叢集不再處於唯讀狀態)。

    4. (選用) 檢查沒有主鍵的資料表是否缺少陳述式。

      如果來源 AlloyDB 資料庫包含沒有主鍵的資料表,您可能需要手動遷移任何缺少的 UPDATEDELETE 陳述式。請參閱資料庫移轉服務說明文件中的「遷移非主鍵資料表的 UPDATE 和 DELETE 作業」。

    5. 將應用程式切換至新的叢集。您的應用程式現在可以連線至新叢集的執行個體,並使用新的 IP 位址。