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

將 AlloyDB for PostgreSQL 叢集升級至較新的 PostgreSQL 主要版本,即可使用最新的資料庫功能、效能強化和安全性更新。您可以就地升級叢集的主要版本,或將資料遷移至執行較新 PostgreSQL 版本的叢集。

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

叢集和 PostgreSQL 版本相容性

建立 AlloyDB 叢集時,您必須選擇與叢集內執行個體相容的 PostgreSQL 主要版本。預設值為 17。

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

不過,PostgreSQL 版本的主要版本升級,需要您自行規劃、測試及執行。

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

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

每種升級解決方案各有優缺點。請參閱下表,瞭解各種方法的簡要比較,以便根據您的情境選擇合適的方法。

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


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

就地升級主要版本

就地升級會更新現有叢集,您不必設定任何額外叢集。詳情請參閱「就地升級資料庫主要版本」。

使用檔案式資料匯出功能進行遷移

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

步驟如下:

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

  2. 使用新的主要版本設定新叢集,以符合目前叢集的設定:

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

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

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

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

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

  3. 使用 psql 或 pg_dump 將舊叢集的資料匯出至檔案。

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

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

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

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

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

重要事項

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

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

資料庫遷移服務會使用持續遷移作業,將資料移至 AlloyDB 叢集。這類遷移作業會在建立初始資料轉儲時,對來源資料庫資料表造成短暫 (不到 10 秒) 的鎖定,一次一個。

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

複製限制

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

如果資料表沒有主鍵,在 CDC 階段只會複製 INSERT 陳述式。在 CDC 階段,對沒有主鍵的資料表執行的任何 CREATE、UPDATE 或 DELETE 動作,都必須在目的地資料庫手動重新建立,以免資料遺失。

事前準備

  1. 啟用 Database Migration Service API (如果尚未啟用)。

    啟用 API 所需的角色

    您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「Service Usage 管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

  2. 確認您具備下列專案角色:

    • 下列其中一項:
      • AlloyDB > AlloyDB 管理員
      • 基本 > 擁有者
      • 基本 > 編輯器
    • 您也必須在使用的 Google Cloud 專案中具備 compute.networks.list 權限。如要取得這項權限,同時遵循最小權限原則,請要求管理員授予您「Compute Engine」>「Compute 網路使用者」角色 (roles/compute.networkUser)。
    • 資料庫遷移管理員

    檢查角色

    1. 前往 Google Cloud 控制台的「IAM」頁面。

      前往「IAM」頁面
    2. 選取專案。
    3. 在「Principal」(主體) 欄中,找出所有代表您或您所屬群組的資料列。如要瞭解您所屬的群組,請與管理員聯絡。

    4. 在指定或包含您的所有資料列中,查看「Role」(角色) 欄,確認角色清單是否包含必要角色。

    授予角色

    1. 前往 Google Cloud 控制台的「IAM」頁面。

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

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

設定來源執行個體

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

如要設定 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 that you 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 旗標設為 70,且已使用 2 個傳送者,則 max_wal_senders 應至少為 82 (計算方式為 70 + 10 + 2 = 82)。

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

    舉例來說,如果來源執行個體上有 30 個資料庫,且不使用任何 worker 程序,請將這個旗標設為 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 指令切換至其他資料庫,而不必重設 psql 用戶端連線。

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

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

步驟如下:

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

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

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

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

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

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

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

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

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

  5. 將應用程式切換至新叢集。應用程式可以透過新 IP 位址連線至新叢集的執行個體。