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

本頁說明在您設定 Datastream 至 BigQuery 的複製作業,但在錯誤的區域中設定目的地資料集的用途時,應採取的最佳做法。接著,您想將資料集移至其他區域 (或多區域),但不必將來源資料庫中的所有資料重新同步處理至 BigQuery。

事前準備

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

  • 遷移作業需要時間,您必須在作業期間暫停串流。為了維持資料完整性,來源資料庫必須在暫停串流時保留變更記錄。如要預估要暫停串流多久,請將資料集中的 max_staleness 值與最久執行的合併作業結合:
    • 如要瞭解合併作業可能需要多久才能完成,請參閱「建議的資料表 max_staleness」。
    • 如要找出資料集中的最大 max_staleness,請參閱「判斷資料表的目前 max_staleness」,並根據您的具體需求調整查詢。
    • 如果預估的暫停時間過長,來源資料庫無法支援,建議您考慮暫時降低資料集中資料表的 max_staleness 值。
  • 請確認執行遷移作業的使用者在目的地區域中具有足夠的 BigQuery 資源 (查詢保留空間和背景保留空間)。如要進一步瞭解預留項目,請參閱「預留項目指派」。
  • 請確認執行遷移作業的使用者具備足夠的權限,例如 身分與存取權管理 (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. 視需要刪除原始串流。