為維持可靠的複製作業,並盡量縮短 Datastream 的停機時間,您可以對串流和來源資料庫套用作業最佳做法。這些做法可協助您切換串流的來源資料庫、設定指標警告、排解延遲問題,以及規劃每個串流的資料表限制。
變更串流的來源資料庫
在某些情況下,您可能需要變更串流的來源資料庫。舉例來說,您可能需要修改串流,從副本 (而非主要資料庫執行個體) 複製資料。
- 為副本執行個體建立連線設定檔。
- 建立串流,使用您建立的副本連線設定檔,以及現有的目的地連線設定檔。
- 啟動串流,並停用歷來資料補充。串流啟動後,只會擷取二進位記錄中的資料。
- 選用。串流執行後,修改串流即可啟用自動遞補。
- 暫停從主要執行個體讀取資料的串流。
- 選用。刪除從主要執行個體串流資料的串流。
- 選用。刪除主要執行個體的連線設定檔。
在 Datastream 中設定快訊和監控
Datastream 資訊主頁包含大量資訊。這項資訊有助於偵錯。如需更多資訊,請查看 Cloud Logging 中的記錄。
Datastream 快訊
Datastream 沒有預設警報。舉例來說,您可以在「Overview」(總覽) 分頁中,點選「Create alerting policy」(建立警告政策) 連結,為「Data freshness」(資料更新間隔) 指標建立警告政策。如要查看其餘指標,請按照下列步驟操作:
前往 Google Cloud 控制台的 notifications「Alerting」(警告) 頁面:
點選「建立政策」。
按一下「選取指標」下拉式選單。
在篩選器欄位中輸入
Datastream。選用:您可能需要停用「有效」篩選器,才能查看所有可用指標。
在「Datastream 串流」下方,搜尋要監控的指標。
按一下「套用」。
選用:在「新增篩選器」和「轉換資料」部分輸入必要詳細資料。然後點選「下一步」。
在「設定快訊觸發條件」部分輸入必要資訊。點選「下一步」。
在「Configure notifications and finalize alert」(設定通知並完成快訊) 專區設定通知。
檢查警告是否設定妥當,然後點選「建立政策」。
如要進一步瞭解如何完成上述各步驟,請參閱「建立警告政策」。
建議您為下列 Datastream 指標建立快訊:
- 資料更新間隔
- 串流不支援的事件計數
- 串流總延遲時間
如果任何指標觸發警告,可能代表串流或來源資料庫有問題。
瞭解延遲
Datastream 提供下列指標,協助您瞭解複製延遲:
- 資料更新間隔:資料提交至來源的時間,與 Datastream 讀取資料的時間之間的時間差。如果這項指標的值偏高,表示 Datastream 讀取資料的速度比來源產生資料的速度慢。這表示來源或來源的網路連線可能發生問題。
- 系統延遲時間:Datastream 處理事件所需的時間,從從來源讀取事件到寫入目的地。
- 總延遲時間:端對端複製延遲時間,代表從資料提交至來源到寫入目的地的總時間。
如果資料更新間隔較短,常見原因包括:
- 來源過載:來源資料庫產生記錄 (二進位記錄檔、重做日誌檔、WAL 檔案) 的速度,比 Datastream 讀取記錄的速度快。
- MySQL/Oracle 動作:
提高
maxConcurrentCdcTasks參數,以平行方式讀取更多記錄。 - PostgreSQL 動作:將高流失率的資料表隔離到專屬的資料流。
- SQL Server 的動作:增加
maxConcurrentCdcTasks參數,平行讀取更多變更資料表。
- MySQL/Oracle 動作:
提高
- 來源資源不足:來源資料庫伺服器本身發生問題,例如 CPU 使用率過高、記憶體不足或磁碟 I/O 瓶頸。
- 動作:確認來源執行個體健康狀態良好。檢查 CPU/RAM 使用量。如果是 PostgreSQL,請考慮調高
logical_decoding_work_mem參數的值;如果是 Oracle,請確保已分配足夠的系統全域區域 (SGA)。
- 動作:確認來源執行個體健康狀態良好。檢查 CPU/RAM 使用量。如果是 PostgreSQL,請考慮調高
- 網路容量問題:來源與 Google Cloud之間出現高 ping 時間或頻寬飽和。
- 行動:監控 VPN 或 Cloud Interconnect 頻寬和延遲時間。
- 單筆大型交易:大型批次工作 (例如對數百萬個資料列執行
UPDATE) 可能會導致延遲時間暫時飆升。- 動作:這是預期中的情況。等待 Datastream 處理大型事件。建議您日後將大型批次工作拆分成較小的區塊。
如果系統延遲時間偏高,可能表示 Datastream 或目的地有問題。
- 動作:檢查 Cloud Logging 是否有持續性的資料列層級錯誤 (例如
invalid input for type json。如果資料類型或限制錯誤導致串流進入重試迴圈,可能需要手動修正來源資料。如果沒有明顯錯誤,請向 Google 支援團隊尋求協助。
單一串流可以處理多少資料表?
建議單一串流最多包含 10,000 個資料表。表格大小沒有限制,如果需要建立包含更多資料表的串流,串流可能會進入錯誤狀態。為避免這種情況,建議您將來源分割成多個串流。