

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 遷移至 HSM 加密的叢集
<a name="migrating-to-an-encrypted-cluster"></a>

若要將未加密的叢集遷移至使用硬體安全模組 (HSM) 加密的叢集，請建立新的加密叢集，然後將您的資料移至新叢集。您無法經由修改叢集來遷移 HSM 加密的叢集。

若要從未加密的叢集遷移至 HSM 加密的叢集，請先從現有的來源叢集卸載您的資料。然後在新的目標叢集中，使用所選的加密設定將資料重新載入。如需啟動加密的叢集的相關資訊，請參閱[Amazon Redshift 資料庫加密](working-with-db-encryption.md)。

遷移程序期間，您的來源叢集可供唯讀查詢，直到最後一個步驟為止。最後一個步驟是重新命名目標和來源叢集，這會切換端點，使得所有流量會路由至新的目標叢集。在您重新命名後重新開機之前，目標叢集將無法使用。在資料傳送時，請暫停來源叢集上的所有資料載入和其他寫入操作。<a name="prepare-for-migration"></a>

**準備遷移**

1. 識別與 Amazon Redshift 互動的所有相依系統，例如商業智慧 (BI) 工具和擷取、轉換和載入 (ETL) 系統。

1. 識別驗證查詢以測試遷移。

   例如，您可以使用下列查詢來尋找使用者定義資料表的數目。

   ```
   select count(*)
   from pg_table_def
   where schemaname != 'pg_catalog';
   ```

   下列查詢會傳回所有使用者定義資料表的清單，和每個資料表中資料列的數目。

   ```
   select "table", tbl_rows
   from svv_table_info;
   ```

1. 選擇適合遷移的好時機。若要了解叢集使用率何時最低，請監控叢集指標，例如 CPU 使用率和資料庫連線數目。如需詳細資訊，請參閱[檢視叢集效能資料](performance-metrics-perf.md)。

1. 捨棄未使用的資料表。

   若要建立資料表的清單和查詢每個資料表的次數，請執行下列查詢。

   ```
   select database,
   schema,
   table_id,
   "table",
   round(size::float/(1024*1024)::float,2) as size,
   sortkey1,
   nvl(s.num_qs,0) num_qs
   from svv_table_info t
   left join (select tbl,
   perm_table_name,
   count(distinct query) num_qs
   from stl_scan s
   where s.userid > 1
   and   s.perm_table_name not in ('Internal worktable','S3')
   group by tbl,
   perm_table_name) s on s.tbl = t.table_id
   where t."schema" not in ('pg_internal');
   ```

1. 啟動新的加密叢集。

   對目標叢集使用與來源叢集相同的連線埠號碼。如需啟動加密的叢集的相關資訊，請參閱[Amazon Redshift 資料庫加密](working-with-db-encryption.md)。

1. 設定卸載和載入程序。

   您可以使用 [Amazon Redshift Unload/Copy Utility](https://github.com/awslabs/amazon-redshift-utils/tree/master/src/UnloadCopyUtility) 來幫助您在叢集之間遷移資料。該公用程式會從來源叢集匯出資料至 Amazon S3 上的位置。資料會使用 加密 AWS KMS。然後該公用程式會將資料自動匯入至目標。您可以在遷移完成之後，選擇性地使用該公用程式來清理 Amazon S3。

1. 執行測試以驗證您的程序並估計寫入操作必須暫停的時間長度。

   在卸載和載入操作期間，透過暫停資料載入和其他寫入操作來保有資料一致性。使用您的其中一個最大的資料表，執行卸載和載入程序來幫助您估計時間。

1. 建立資料庫物件，例如結構描述、檢視和資料表。為了協助您產生必要的資料定義語言 (DDL) 陳述式，您可以在 AWS GitHub 儲存庫的 [AdminViews](https://github.com/awslabs/amazon-redshift-utils/tree/master/src/AdminViews) 中使用指令碼。<a name="migration-your-cluster"></a>

**遷移叢集**

1. 停止來源叢集上的所有 ETL 處理。

   若要確認程序中沒有寫入操作，請使用 Amazon Redshift 管理主控台來監控寫入 IOPS。如需詳細資訊，請參閱[檢視叢集效能資料](performance-metrics-perf.md)。

1. 執行您稍早識別的驗證查詢，以在遷移之前收集未加密的來源叢集的相關資訊。

1. (選用) 建立一個工作負載管理 (WLM) 佇列以使用來源和目標叢集中最大可用的資源。例如，建立名為 `data_migrate` 的佇列，並設定具有 95% 記憶體和並行 4 的佇列。如需詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的[根據使用者群組和查詢群組將查詢路由至佇列](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-wlm-routing-queries-to-queues.html)。

1. 使用 `data_migrate` 佇列，執行 UnloadCopyUtility。

   使用 Amazon Redshift 主控台監控 UNLOAD 和 COPY 程序。

1. 再次執行驗證查詢，並驗證該結果符合來源叢集的結果。

1. 重新命名您的來源和目標叢集以交換端點。為了避免干擾，請在上班時間以外執行此操作。

1. 驗證您可以使用您的所有 SQL 用戶端 (例如 ETL 和報表工具) 連線至目標叢集。

1. 關閉未加密的來源叢集。