將 CDC 資料表遷移至其他區域

本頁說明最佳做法,適用於您已將 Datastream 複製作業設定為 BigQuery,但目的地資料集設定在錯誤區域的用途。然後,您想將資料集移至其他地區 (或多地區),不必重新將所有資料從來源資料庫同步到 BigQuery。

事前準備

開始將資料遷移至其他地區前,請考量下列事項:

  • 遷移作業需要時間,且您必須在作業期間暫時停止串流。為維護資料完整性,資料流暫停時,來源資料庫必須保留變更記錄。如要估算暫停串流的時間長度,請合併資料集中的 max_staleness 值和執行時間最長的合併作業:
    • 如要瞭解合併作業可能需要多久才能完成,請參閱「建議的資料表 max_staleness」。
    • 如要找出資料集中的最大 max_staleness,請參閱「判斷資料表的目前 max_staleness」,並根據特定需求調整查詢。
    • 如果預估暫停時間過長,來源資料庫無法支援,建議您暫時減少資料集中資料表的 max_staleness 值。
  • 確認執行遷移作業的使用者在目標區域中,擁有足夠的 BigQuery 資源 (查詢保留項目和背景保留項目)。如要進一步瞭解預留項目,請參閱「預留項目指派」。
  • 確認執行遷移作業的使用者具備足夠的權限,例如 Identity and Access Management (IAM) 控制項或 VPC Service Controls

遷移步驟

如要啟動資料集遷移作業,請使用 BigQuery 資料複製功能:

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

    前往 BigQuery Studio

  2. 在新區域中建立 BigQuery 資料集副本:

    ALTER SCHEMA DATASET_NAME
    ADD REPLICA 'NEW_REGION'
    OPTIONS(location='NEW_REGION');
    

    更改下列內容:

    • DATASET_NAME:要建立的資料集名稱。
    • NEW_REGION:要建立資料集的區域名稱。例如 region-us
  3. 監控遷移進度,並等待副本中的複製浮水印與主要副本的差距在幾分鐘內。您可以在 BigQuery INFORMATION_SCHEMA 上執行這項查詢,查看遷移進度:

    SELECT
    catalog_name as project_id,
    schema_name as dataset_name,
    replication_time as dataset_replica_staleness
    FROM
    'NEW_REGION'.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
    WHERE
    catalog_name = PROJECT_ID
    AND schema_name = DATASET_NAME
    AND location = NEW_REGION;
    

    更改下列內容:

    • PROJECT_ID: Google Cloud 專案的 ID。
    • DATASET_NAME:資料集名稱。
    • DATASET_REPLICA_STALENESS:您建立的資料集副本中資料表的過時設定。
    • NEW_REGION:您建立資料集的區域。
  4. 暫停現有的 Datastream 串流。詳情請參閱「暫停串流」。

  5. 等待串流排空,並記下串流進入 PAUSED 狀態的時間。

  6. 請檢查資料表,確認最新的 CDC 變更已套用至 BigQuery 資料表。upsert_stream_apply_watermark執行下列查詢,確認浮水印時間戳記比串流暫停時間晚 10 分鐘:

    SELECT table_name, upsert_stream_apply_watermark
    FROM DATASET_NAME.INFORMATION_SCHEMA.TABLES
    

    如要只針對特定表格執行查詢,請新增下列 WHERE 子句:

    WHERE table_name = 'TABLE_NAME'
    

    更改下列內容:

    • DATASET_NAME:資料集名稱。
    • TABLE_NAME:選用。要檢查 upsert_stream_apply_watermark 的表格。
  7. 使用步驟 3 中的查詢,確認新區域副本浮水印晚於步驟 6 中擷取的 upsert_stream_apply_watermark

  8. 如有需要,您可以手動比較原始區域中主要資料集的幾個資料表,以及新區域中的副本,確認所有資料都已正確複製。

  9. 在 BigQuery Studio 中執行下列指令,升級 BigQuery 資料集副本:

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(primary_replica = 'NEW_REGION');
    

    更改下列內容:

    • DATASET_NAME:資料集名稱。
    • NEW_REGION:您建立資料集的區域。
  10. 如果不再需要原始資料集 (現在是副本),且不想產生額外費用,可以前往 BigQuery Studio 並捨棄原始 BigQuery 資料集:

    ALTER SCHEMA DATASET_NAME DROP REPLICA IF EXISTS ORIGINAL_REGION;
    

    更改下列內容:

    • DATASET_NAME:原始資料集的名稱。
    • ORIGINAL_REGION:原始資料集的區域。
  11. 建立新串流,採用完全相同的設定,但使用新的 BigQuery 目的地位置。

  12. 開始新的直播。

    如要避免複製重複事件,請從特定位置啟動串流:

    • 如果是 MySQL 和 Oracle 來源,您可以檢查原始串流的記錄,找出串流成功讀取資料的最後位置,藉此判斷記錄位置。如要瞭解如何從特定位置開始串流,請參閱「管理串流」。
    • 如果是 PostgreSQL 來源,新的串流會從複製運算單元中的第一個記錄檔序號 (LSN) 開始讀取變更。由於原始資料串流可能已處理部分變更,請手動將複製運算單元的指標變更為 Datastream 讀取的最後一個 LSN。您可以在 Datastream 消費者記錄中找到這個 LSN。
  13. 視需要刪除原始串流。