已知限制

選擇將資料庫遷移至 AlloyDB for PostgreSQL 前,請考量這個遷移情境的已知限制。

使用 PostgreSQL 資料庫做為來源時,已知限制包括:

  • pglogical 擴充功能不支援 PostgreSQL 12 以上版本的 生成資料欄複製作業。

  • 資料表結構 (DDL) 的變更不會透過標準 DDL 指令複製,而只能使用 pglogical 擴充功能執行的指令複製。包括變更 enum 類型。

    • 例如,pglogical 提供 pglogical.replicate_ddl_command 函式,可讓 DDL 在來源資料庫和副本上的一致時間點執行。在來源上執行這項指令的使用者必須已存在於副本。
    • 如要複製新建立資料表的資料,您必須使用 pglogical.replication_set_add_table 指令,將新資料表新增至現有的複製集。
    • 如要進一步瞭解遷移期間的 DDL 複製作業,請參閱「遷移保真度」。
  • 物件限制:

    • 邏輯複製不會複製外部資料表。
    • UNLOGGED 和 TEMPORARY 資料表不會複製,也無法複製。
    • PostgreSQL 邏輯解碼不支援大型物件資料類型 (oid 參照 pg_largeobject)。
    • 資料庫遷移服務不會遷移 materialized view 的資料,只會遷移 view 結構定義。如要在目的地資料庫中填入檢視表,請執行 REFRESH MATERIALIZED VIEW view_name;。
    • 在持續 CDC 期間,目的地上的 SEQUENCE 狀態 (例如 last_value) 可能與來源不同。序列值會在最終推送步驟中同步。
  • 如果資料表沒有主鍵,資料庫遷移服務支援在變更資料擷取 (CDC) 階段遷移初始快照和 INSERT 陳述式。UPDATE 和 DELETE 陳述式的遷移方式因下列情況而異:

    • 標準遷移:如果資料表沒有主鍵,系統不會遷移 UPDATE 和 DELETE 陳述式。您必須先為資料欄新增主鍵,才能遷移,或手動遷移 UPDATE 和 DELETE 陳述式。
    • 快速啟動遷移作業:如果將副本身分設為 INDEX 或 FULL,則不需主鍵即可複製 UPDATE 和 DELETE 作業。設定 REPLICA IDENTITY FULL 會增加預寫記錄檔 (WAL) 磁碟區和資源負擔。建議您盡可能新增主鍵。詳情請參閱 PostgreSQL 副本身分說明文件和 快速入門遷移指南。
  • 只能遷移 AlloyDB for PostgreSQL 支援的 PostgreSQL 擴充功能和擴充功能版本。資料庫遷移服務不會遷移 AlloyDB for PostgreSQL 不支援的擴充功能。如果來源資料庫中的擴充功能版本不支援 AlloyDB for PostgreSQL,測試或啟動遷移工作可能會失敗。為確保遷移作業順利進行,請確認來源擴充功能受到支援,且應用程式未參照不支援的擴充功能。如需支援的擴充功能清單,請參閱 AlloyDB for PostgreSQL 說明文件中的「 支援的擴充功能」。

  • 資料庫遷移服務不會遷移 pg_cron 擴充功能 (或擴充功能中設定的任何 cron 工作),但 AlloyDB for PostgreSQL 目的地支援這項功能。如果您在來源資料庫中使用 pg_cron,請在遷移完成後,重新安裝擴充功能,並在目的地叢集上設定 cron 工作。

  • 資料庫遷移服務不支援從處於復原模式的唯讀副本遷移。

  • 資料庫遷移服務不支援已套用 AWS SCT 擴充套件的 Amazon RDS 來源。

  • 以 C 語言編寫的 user-defined function 無法遷移,但建立 AlloyDB for PostgreSQL 支援的擴充功能時安裝的函式除外。

  • 遷移工作啟動後,新增至來源執行個體的資料庫不會遷移。

  • 使用資料庫遷移服務遷移資料時,您可以選取特定資料庫。系統會遷移所選資料庫中的所有資料表和結構定義,但下列項目除外:

    • 資訊結構定義 (information_schema)。
    • 任何開頭為 pg_ 的結構定義 (例如 pg_catalog、pg_toast、pgtemp*)。如需開頭為 pg_ 的 PostgreSQL 目錄完整清單,請參閱 PostgreSQL 說明文件中的 PostgreSQL 系統目錄。
    • 使用者登入憑證和角色。
  • 如果加密資料庫需要客戶自行管理的加密金鑰 (CMEK) 才能解密資料,而資料庫遷移服務無法存取金鑰,則無法遷移資料庫。不過,使用 pgcrypto 擴充功能加密的資料可以遷移,因為 AlloyDB for PostgreSQL 支援 pgcrypto。資料庫遷移服務也支援從已加密的 Amazon Aurora 或 Amazon RDS 資料庫遷移,因為 AWS 會以透明方式處理解密。詳情請參閱「 加密 Amazon Aurora 資源」和「加密 Amazon RDS 資源」。

  • 遷移中的資料庫在遷移期間不會受到寫入保護:AlloyDB for PostgreSQL 在遷移期間不會以唯讀模式執行目的地執行個體。雖然您可以連線至目的地叢集,建立及管理資料庫使用者,或套用必要的結構定義變更 (DDL),但請勿對正在遷移的資料庫或資料表執行寫入作業 (例如 INSERT、UPDATE 或 DELETE)。寫入遷移資料可能會導致 複製衝突或遷移失敗。

  • 觸發條件行為取決於觸發條件設定。根據預設,除非使用 ALTER EVENT TRIGGER 或 ALTER TABLE ... ENABLE ALWAYS TRIGGER 設定,否則觸發條件不會在複製期間於副本上觸發。

  • 自訂資料表空間會對應至 AlloyDB for PostgreSQL 的預設 pg_default 資料表空間。

  • Private Service Connect 介面連線方法僅支援遷移至現有的目的地叢集。如要使用私人 IP 連線,並在標準遷移作業中遷移至新的目的地叢集,請使用虛擬私有雲對等互連。

安全性定義者函式

使用 SECURITY DEFINER 定義的函式會以函式擁有者的權限執行,而非執行函式的使用者。

在持續遷移至 AlloyDB for PostgreSQL 的過程中,以 SECURITY DEFINER 定義的常式會由目的地主要執行個體上的內部遷移服務使用者 alloydbexternalsync 擁有。由於 alloydbexternalsync 具備較高的管理員權限,包括 alloydbsuperuser 和 alloydbreplica 角色,因此任何獲授權執行這些功能的使用者,都會以完整的 alloydbsuperuser 權限執行這些功能。這會造成非預期的權限提升風險。

如要降低這項風險,請稽核目的地叢集上的所有 SECURITY DEFINER 函式,並在遷移後立即撤銷公開執行權限:

REVOKE EXECUTE ON FUNCTION SCHEMA_NAME.FUNCTION_NAME(ARGUMENT_TYPES) FROM PUBLIC;
GRANT EXECUTE ON FUNCTION SCHEMA_NAME.FUNCTION_NAME(ARGUMENT_TYPES) TO "AUTHORIZED_USER";

校對和語言代碼一致性

AlloyDB for PostgreSQL 預設為 libc 提供的 C.UTF-8 和 en_US.utf8 語言代碼。AlloyDB for PostgreSQL 中的所有其他語言代碼,都使用 Unicode 國際元件 (ICU) 定序。

如果來源資料庫使用的預設定序是以其他 libc 語言代碼為基礎,則該預設值不會自動沿用。為確保使用 ORDER BY 的查詢排序一致,您可能需要在遷移後,使用明確的 ICU 排序規則更新資料表。詳情請參閱 AlloyDB for PostgreSQL 說明文件中的「 匯入資料支援的語言代碼」。

遷移至現有目的地叢集的限制

  • 每個目的地叢集只能設定一項進行中的遷移工作。
  • 標準遷移作業的目的地叢集降級:如要將標準遷移作業遷移至現有的 AlloyDB for PostgreSQL 叢集,資料庫遷移服務會將獨立叢集降級,並設為來源資料庫的外部副本。
    • 在 Google Cloud 控制台建立遷移工作時,您必須輸入目的地叢集 ID (或執行 gcloud database-migration migration-jobs demote-destination),確認降級。
    • 快速啟動遷移作業會使用 PostgreSQL pgnative 邏輯複製功能,不需要也不會執行目的地叢集降級作業。
  • 如要進行標準遷移,現有的目的地叢集必須為空白,或僅包含預設系統設定資料。標準遷移作業不支援遷移至含有使用者資料 (例如資料表) 的現有目的地叢集。

    如果現有目的地叢集中的額外資料導致問題,請清除目的地叢集中的資料庫,然後重試遷移工作。請參閱「 清除現有目的地叢集中的多餘資料」。

  • 支援遷移至含有讀取集區執行個體的叢集。如要進一步瞭解 AlloyDB for PostgreSQL 叢集和執行個體,請參閱「AlloyDB for PostgreSQL 總覽」。

資料 dump 和複製平行處理注意事項

提高資料轉儲和複製平行處理程度,可加快初始快照轉儲和持續變更資料擷取 (CDC) 複製作業,但也會增加來源資料庫和目的地 AlloyDB for PostgreSQL 叢集的連線和資源用量:

  • 選取 OPTIMAL 或 MAX 平行處理之前,請確認來源資料庫有足夠的 CPU、記憶體和 I/O 空間。
  • 使用調整後的資料轉儲或複製平行處理時,您必須在來源和目的地資料庫中,為 max_replication_slots、max_wal_senders 和 max_worker_processes 設定較高的值。如要瞭解詳細的參數計算方式,請參閱「設定來源資料庫」和「指定轉儲和複製作業平行處理」。

配額

  • 無論何時均可存在多達 2,000 個連線設定檔和 1,000 個遷移工作。如要騰出空間,請刪除未使用的遷移工作和連線設定檔。 詳情請參閱「配額與限制」。

主要版本升級期間的 PostgreSQL 擴充功能版本相容性

遷移至較高的 PostgreSQL 主要版本時,資料庫遷移服務會使用 pg_restore 公用程式,安裝目標 PostgreSQL 主要版本的預設擴充功能版本。您無法為 pg_restore 公用程式指定確切的擴充功能版本。

如果來源資料庫使用的擴充功能版本,與目標 PostgreSQL 主要版本上安裝的預設版本結構定義不相容,遷移作業可能會因結構定義不符或內部錯誤而失敗。

為避免遷移失敗,請確認結構定義相容性。遷移前,請將來源資料庫的擴充功能升級至與目標 PostgreSQL 主要版本相容的版本。

後續步驟