將資料遷移至啟用 TDE 的叢集,以及從這類叢集遷移資料

本指南說明如何使用 pg_dump 和 pg_restore,在已啟用透明資料加密 (TDE) 的叢集和未加密的叢集之間遷移資料。

兩種遷移方向 (從 TDE 遷移至非加密,以及反向遷移) 均支援,並使用標準 PostgreSQL 邏輯備份工具。

使用 pg_dump 進行邏輯遷移時,系統會即時解碼來源端的加密資料,並將其轉儲為未加密的 SQL 陳述式。還原資料時,目的地叢集會根據本身的加密設定寫入資料。如果啟用 TDE,目標叢集會加密資料;如果停用 TDE,目標叢集會以純文字寫入資料。

事前準備

將已啟用 TDE 的資料庫遷移至已停用 TDE 的資料庫

  1. 將啟用 TDE 的資料庫伺服器中的資料庫傾印至主機上的檔案。

    /usr/lib/postgresql/18/bin/pg_dump -U postgres -d DATABASE_NAME > /tmp/decrypted_dump.sql
    
  2. 按照「使用 RPM 安裝 AlloyDB Omni」一文中的說明,啟動已停用 TDE 的 AlloyDB Omni 伺服器。

  3. 將 dump 檔案還原至未加密的資料庫伺服器。

    /usr/lib/postgresql/18/bin/psql -U postgres -c "CREATE DATABASE DATABASE_NAME"
    /usr/lib/postgresql/18/bin/psql -U postgres -d DATABASE_NAME < /tmp/decrypted_dump.sql
    

將已停用 TDE 的資料庫遷移至已啟用 TDE 的資料庫

  1. 使用 pg_dump 從未加密的資料庫伺服器傾印資料庫。

    /usr/lib/postgresql/18/bin/pg_dump -U postgres -d DATABASE_NAME > /tmp/src_plaintext_dump.sql
    
  2. 按照「建立啟用 TDE 的叢集」一文中的操作說明,啟動啟用 TDE 的 AlloyDB Omni 伺服器。

  3. 還原至已啟用 TDE 的資料庫伺服器。資料寫入時會以透明方式加密。

    /usr/lib/postgresql/18/bin/psql -U postgres -c "CREATE DATABASE DATABASE_NAME"
    /usr/lib/postgresql/18/bin/psql -U postgres -d DATABASE_NAME < /tmp/src_plaintext_dump.sql
    

後續步驟