使用資料串流的一般最佳做法

為維持可靠的複製作業,並盡量縮短 Datastream 的停機時間,您可以對串流和來源資料庫套用作業最佳做法。這些做法可協助您切換串流的來源資料庫、設定指標警告、排解延遲問題,以及規劃每個串流的資料表限制。

變更串流的來源資料庫

在某些情況下,您可能需要變更串流的來源資料庫。舉例來說,您可能需要修改串流,從副本 (而非主要資料庫執行個體) 複製資料。

  1. 為副本執行個體建立連線設定檔。
  2. 建立串流,使用您建立的副本連線設定檔,以及現有的目的地連線設定檔。
  3. 啟動串流,並停用歷來資料補充。串流啟動後,只會擷取二進位記錄中的資料。
  4. 選用。串流執行後,修改串流即可啟用自動遞補。
  5. 暫停從主要執行個體讀取資料的串流。
  6. 選用。刪除從主要執行個體串流資料的串流。
  7. 選用。刪除主要執行個體的連線設定檔。

在 Datastream 中設定快訊和監控

Datastream 資訊主頁包含大量資訊。這項資訊有助於偵錯。如需更多資訊,請查看 Cloud Logging 中的記錄。

Datastream 快訊

Datastream 沒有預設警報。舉例來說,您可以在「Overview」(總覽) 分頁中,點選「Create alerting policy」(建立警告政策) 連結,為「Data freshness」(資料更新間隔) 指標建立警告政策。如要查看其餘指標,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「Alerting」(警告) 頁面:

    前往「Alerting」(警告)

  2. 點選「建立政策」。

  3. 按一下「選取指標」下拉式選單。

  4. 在篩選器欄位中輸入 Datastream。

  5. 選用:您可能需要停用「有效」篩選器,才能查看所有可用指標。

  6. 在「Datastream 串流」下方,搜尋要監控的指標。

  7. 按一下「套用」。

  8. 選用:在「新增篩選器」和「轉換資料」部分輸入必要詳細資料。然後點選「下一步」。

  9. 在「設定快訊觸發條件」部分輸入必要資訊。點選「下一步」。

  10. 在「Configure notifications and finalize alert」(設定通知並完成快訊) 專區設定通知。

  11. 檢查警告是否設定妥當,然後點選「建立政策」。

    如要進一步瞭解如何完成上述各步驟,請參閱「建立警告政策」。

建議您為下列 Datastream 指標建立快訊:

  • 資料更新間隔
  • 串流不支援的事件計數
  • 串流總延遲時間

如果任何指標觸發警告,可能代表串流或來源資料庫有問題。

瞭解延遲

Datastream 提供下列指標,協助您瞭解複製延遲:

  • 資料更新間隔:資料提交至來源的時間,與 Datastream 讀取資料的時間之間的時間差。如果這項指標的值偏高,表示 Datastream 讀取資料的速度比來源產生資料的速度慢。這表示來源或來源的網路連線可能發生問題。
  • 系統延遲時間:Datastream 處理事件所需的時間,從從來源讀取事件到寫入目的地。
  • 總延遲時間:端對端複製延遲時間,代表從資料提交至來源到寫入目的地的總時間。

如果資料更新間隔較短,常見原因包括:

  • 來源過載:來源資料庫產生記錄 (二進位記錄檔、重做日誌檔、WAL 檔案) 的速度,比 Datastream 讀取記錄的速度快。
    • MySQL/Oracle 動作: 提高 maxConcurrentCdcTasks 參數,以平行方式讀取更多記錄。
    • PostgreSQL 動作:將高流失率的資料表隔離到專屬的資料流。
    • SQL Server 的動作:增加 maxConcurrentCdcTasks 參數,平行讀取更多變更資料表。
  • 來源資源不足:來源資料庫伺服器本身發生問題,例如 CPU 使用率過高、記憶體不足或磁碟 I/O 瓶頸。
    • 動作:確認來源執行個體健康狀態良好。檢查 CPU/RAM 使用量。如果是 PostgreSQL,請考慮調高 logical_decoding_work_mem 參數的值;如果是 Oracle,請確保已分配足夠的系統全域區域 (SGA)。
  • 網路容量問題:來源與 Google Cloud之間出現高 ping 時間或頻寬飽和。
    • 行動:監控 VPN 或 Cloud Interconnect 頻寬和延遲時間。
  • 單筆大型交易:大型批次工作 (例如對數百萬個資料列執行 UPDATE) 可能會導致延遲時間暫時飆升。
    • 動作:這是預期中的情況。等待 Datastream 處理大型事件。建議您日後將大型批次工作拆分成較小的區塊。

如果系統延遲時間偏高,可能表示 Datastream 或目的地有問題。

  • 動作:檢查 Cloud Logging 是否有持續性的資料列層級錯誤 (例如 invalid input for type json。如果資料類型或限制錯誤導致串流進入重試迴圈,可能需要手動修正來源資料。如果沒有明顯錯誤,請向 Google 支援團隊尋求協助。

單一串流可以處理多少資料表?

建議單一串流最多包含 10,000 個資料表。表格大小沒有限制,如果需要建立包含更多資料表的串流,串流可能會進入錯誤狀態。為避免這種情況,建議您將來源分割成多個串流。