2025年4月22日 星期二

IBM Data Replication (CDC) 資料同步抄寫實作系列《實作演練篇》  Part 4:同步抄寫作業監控與效能瓶頸分析(圖文說明)

作為系列文章的結尾,本篇文章將聚焦於 IDR 管理主控台中的「訂閱監控(Monitoring Subscriptions)」功能。透過這個內建工具,管理者可以即時掌握訂閱任務的同步狀態、分析抄寫作業的執行效能與延遲時間,以及檢視與訂閱任務或資料儲存庫相關的系統事件訊息。這些資訊有助於深入瞭解整體同步抄寫環境的運作情形,並協助診斷潛在可能的問題。我們將新增一個一對一資料表標準同步鏡映(Mirror)的訂閱任務,並檢視 IDR 資料抄寫引擎在來源端與目的端所產生的事件記錄(Event Log)。此外,我們會對來源端 Oracle 資料庫執行大量資料異動操作,藉由 IDR 管理主控台提供的效能監測指標,即時觀察同步效能是否出現瓶頸,進一步掌握系統負載狀況。




  IBM Data Replication 是一套運用 Change Data Capture(CDC)即時資料同步抄寫技術,滿足企業經營管理高層即時商業性決策需求的有效工具。我們在《即時資料同步抄寫解決方案》文章中有介紹過,這個工具非常適合用於主機系統報表查詢外移、數據中台資料共享架構、混合雲資料庫即時同步、以及集中式主資料管理系統等四種常見的商業應用場景。無論是哪一種應用場景,IBM Data Replication(以下簡稱為 IDR)的核心技術就是快速且穩定地在異質資料庫之間進行異動資料的同步抄寫。
  本系列文章將以 Oracle to SQL Server 為例,帶您逐步了解資料同步與抄寫的實作流程。在《環境建置篇》我們聚焦於整體實作環境所需的軟體安裝與設定,共分為來源端(Part 1)目的端(Part 2)中控端(Part 3)等三篇文章。《實作演練篇》則會詳細說明 IDR 如何因應各種常見使用場景的操作流程,共分為標準與稽核模式同步抄寫(Part 1)自訂客製化稽核欄位(Part 2)同步抄寫作業的停止與重新啟動(Part 3)以及同步抄寫作業監控與效能瓶頸分析(Part 4)等四篇文章,這些豐富地內容將可協助您快速掌握實務操作的技巧。




IDR CDC 資料同步抄寫實作《實作演練篇》Part 4:同步抄寫作業監控與效能瓶頸分析





1.配置一對一資料表標準同步鏡映(Mirror)

首先,我們在管理主控台中新增一個訂閱任務。請切換至「配置」視圖,於「訂閱」頁籤中,點擊「建立新訂閱」按鈕。在「新建訂閱」視窗中,使用以下資訊建立一個新訂閱。
  • 身分識別-名稱ORCL_TO_SQL_4
  • 身分識別-說明:略過不填寫。
  • 身分識別-專案:直接使用 預設專案
  • 資料儲存庫-來源Oracle_Source
  • 資料儲存庫-目標SQLSERVER_Target


ORCL_TO_SQL_4 訂閱建立完成後,進行資料表對映配置。在「對映表格」視窗中,對映模式選擇「多個一對一對映」,對映類型選擇「標準」,點擊「下一步」按鈕。


接下來,進入到選取來源表格步驟。請於來源表格清單中,展開 Oracle_Source > CREDIT_USER 資料庫,勾選 CREDIT_APP 資料表,點擊「下一步」按鈕。


選擇讓 IDR 資料抄寫引擎直接在目的端新建資料表,請點選「建立新的目標表格,點擊「下一步」按鈕


接著為新目標表格選取綱目,請點擊目標綱目下方的「按一下以選取目標擁有者...」。在「選取目標」視窗中,選取 SQLSERVER_Target > dbo 做為目標綱目,點擊「確定」按鈕。


進入到命名目標表格步驟,選擇「與來源表格名稱相同」即可。點擊「下一步」按鈕。


設定抄寫方法步驟,請選擇「鏡映(Mirror or Change Data Capture)」讓 IDR 資料抄寫引擎即時將來源資料表的異動同步抄寫到目標資料表。點擊「下一步」按鈕。


完成鏡映(Mirror)訂閱的配置後,請點擊「完成」按鈕,讓 IDR 資料抄寫引擎進行資料表對映的初始化作業。


資料表對映初始化作業完成後,點擊表格對映項目,下方會顯示資料表欄位對映的細節。若需要進一步調整資料表欄位對映的設定,也可以在這裡完成。




2.啟動資料同步抄寫訂閱並檢視事件記錄(Event Log)

切換至「監視」視圖下的「訂閱」頁籤,在右側清單中可以看到訂閱任務 ORCL_TO_SQL_4 目前的狀態為「非作用中」,表示尚未啟動資料同步作業。


下表彙整了 IDR 管理主控台中各種訂閱狀態的說明,這可以加速我們理解訂閱任務的執行階段與狀態,並有效掌握同步抄寫流程的管理。

訂閱狀態 狀態說明
結束中
(Ending)
管理者已停止該訂閱任務的抄寫作業,IDR 資料抄寫引擎停止中(待完成目的端操作後立即停止)。
失敗
(Failed)
IDR 資料抄寫引擎發生錯誤,該訂閱任務已停止抄寫作業(可檢視「事件」訊息了解失敗原因)。
非作用中
(Inactive)
該訂閱任務尚未啟動同步抄寫作業。
已鎖定
(Locked)
管理者已鎖定訂閱任務,對其他抄寫作業管理者而言,已鎖定的訂閱都是唯讀狀態。
連續鏡映
(Mirror Continuous)
該訂閱任務已啟動同步抄寫作業,抄寫模式為連續鏡映(Continuous Mirroring)。
鏡映網路變更
(Mirror Net Change)
該訂閱任務已啟動同步抄寫作業,抄寫模式為預定結束(Scheduled End Mirroring or Net Change),IDR 資料抄寫引擎將於指定的結束條件到達時停止同步抄寫作業。
鏡映之前重新整理
(Refresh Before Mirroring)
IDR 資料抄寫引擎在執行鏡映抄寫之前會先進行重新整理(Refresh)作業。
重新整理
(Refreshing)
IDR 資料抄寫引擎正在執行重新整理(Refresh)作業(重新整理完成後,依據訂閱執行的方法,訂閱狀態會變更為「非作用中」或「連續鏡映」或「鏡映網路變更」)。
啟動中
(Starting)
IDR 資料抄寫引擎正在啟動訂閱任務的抄寫作業。
不明
(Unknown)
IDR 資料抄寫引擎無法判定訂閱任務的狀態。這可能是因為監視處理程序與資料儲存庫之間無法正常通訊,或該訂閱任務正在使用外部來源的資料儲存庫。
   
「訂閱」頁籤左方區塊預設為「摘要」清單,顯示訂閱任務的摘要統計資訊,包含「抄寫」區段與「延遲」區段。
  • 「抄寫」區段:將同步抄寫工作細分為五個狀態,並顯示每個訂閱執行狀態的計數。
    • 鏡映:處於「Mirroring Continuous」以及「Mirroring Scheduled End」狀態的訂閱任務數量。
    • 重新整理:處於「 Refreshing 」狀態的訂閱任務數量。
    • 失敗:執行失敗的訂閱任務數量。
    • 非作用中:未執行的訂閱任務數量。
    • 其他:處於「Starting」、「Ending」、「Locked」或「Unknown」狀態的訂閱任務數量。
  • 「延遲」區段:將延遲層次細分為三種狀態:「問題」、「警告」及「正常」。必須設定訂閱的延遲臨界值,才能在此區域中顯示計數值。


「摘要」清單右方為「抄寫圖」,它以視覺化方式表示抄寫配置中的資料儲存庫及其之間的對映關係。在資料儲存庫圖形之間執行的每一條連接線都有指向目標資料儲存庫的箭頭,連接器中間點的「循環指示器」顯示訂閱狀態:綠色代表作用中,黃色代表非作用中,紅色代表失敗。因為連接器可以代表多個訂閱,所以「循環指示器」顯示的訂閱狀態是具有最低狀態之訂閱的狀態。例如,連接器若包含 5 個訂閱,其中 4 個作用中,1 個非作用中,則圓形指示器會是黃色(最低狀態)。


為了更清楚理解 IDR 資料抄寫引擎的事件記錄(Event Log),我們先清除儲存在 IDR 資料抄寫引擎的歷史事件記錄。請以滑鼠雙擊「監視」視圖右下角的「現行抄寫事件」視窗標題將視窗最大化,點擊「擷取事件」按鈕,點選「所有事件」項目。


點擊「事件」視窗上方功能列的「清除事件」按鈕,點選「清除所有事件」項目。


「事件」視窗除了「擷取事件」與「清除事件」這二個功能按鈕之外,右方還有「訂閱」、「單次提取」、「資料儲存庫」、「來源」、「目標」等五個記錄不同對象的事件記錄功能按鈕。請逐一確認所有事件記錄均已清除。


歷史事件記錄清除完畢後,點擊選取 ORCL_TO_SQL_4 訂閱。開始啟動之前,先點擊下方「收集統計資料」按鈕,讓 IDR 資料抄寫引擎可以即時收集同步抄寫過程中的效能數據,方便我們後續進行分析。以滑鼠右鍵點擊 ORCL_TO_SQL_4 訂閱,於選單中點擊「開始鏡映」選項。


連續鏡映訂閱任務啟動後,IDR 資料抄寫引擎會先執行「重新整理」工作,將來源資料表的完整副本抄寫到目標資料表。待重新整理工作完成後,ORCL_TO_SQL_4 訂閱的狀態會變更為:連續鏡映,請於「事件」視窗中點擊「擷取事件」按鈕,點選「所有事件」項目。


事件擷取作業啟動後,IDR 管理主控台會自動從來源端與目的端資料抄寫引擎中擷取事件記錄(Event Log)。首先,請點擊「訂閱」按鈕,接著點擊「來源」按鈕,檢視由 Oracle 來源端產生的事件記錄(雙擊個別訊息可以開啟獨立視窗檢視完整內容)。從下圖藍色框標示的事件記錄中,可以清楚觀察到訂閱任務啟動後,整個重新整理作業的執行流程。根據來源擷取引擎(Source Capture Engine)的事件訊息顯示,重新整理作業將 CREDIT_APP 資料表中的 100 筆資料傳送到目標抄寫引擎(Target Engine),並於完成後接收到目標引擎寫入成功的確認回報。


接下來,點擊「訂閱」按鈕,接著點擊「目標」按鈕,這裡可以檢視由目的端 SQL Server 產生的事件記錄。從下圖藍色框標示的事件記錄中,可以看到目標抄寫引擎已成功接收來源擷取引擎傳送的 100 筆資料,並透過 Apply Agent 完成資料的寫入作業。值得注意的是,將資料寫入目的端 CREDIT_APP 資料表之前,目標抄寫引擎會先移除該資料表上的索引(Index),並執行資料清除(Truncation)操作,清空資料表的內容。這麼詳盡的事件記錄提供了完整的作業細節,有助於管理者掌握 IDR 資料抄寫引擎的處理流程;一旦發生異常,也能快速定位問題來源並即時進行排除。




3.啟動即時監控分析大量資料同步抄寫的效能瓶頸

接下來,我們將透過實作案例,介紹 IDR 管理主控台中的「訂閱監控(Monitoring Subscriptions)」功能。首先,請注意,在啟動訂閱任務之前,必須先點擊「收集統計資料」按鈕,讓 IDR 資料抄寫引擎啟動效能資料收集機制。功能啟動後,訂閱任務列表中的最後一欄會出現一個代表統計資訊的小圖示,表示 IDR 已開始收集相關指標數據。接著,點擊「監視效能」按鈕,進入「效能」頁籤中進一步設定欲收集與監控的各項量測指標(Metrics),以便更全面地掌握同步作業的效能狀況。


進入「監視」視圖中的「效能」頁籤後,我們可以選擇執行「訂閱層級的監控」或「資料表層級的監控」,以便依不同需求進行效能觀測。在下方的「可用的度量值」清單中,可以勾選欲監控的度量指標。完成選取後,點擊「收集資料」按鈕,就可以啟動資料的蒐集與即時效能監控作業。


IDR 提供多種效能度量值,協助我們深入分析訂閱任務的執行效能。可用的度量值會依訂閱所屬的資料儲存庫類型而有所不同,系統介面中僅會顯示與當前資料儲存庫相關的度量值項目。下表彙整了 IDR 內建的度量值類型與簡要說明,點擊對應的英文名稱連結,可以進一步查閱官方文件中對於該類型所涵蓋的詳細度量指標。

度量值類型 類型說明
資料儲存庫度量
(Datastore)
用於分析資料儲存庫特定的抄寫活動。
資料庫工作量度量
(Database Workload)
用於分析來源資料庫特定的抄寫活動。
日誌快取度量
(Log cache)
當 CDC Replication Engine for Db2 for z/OS 做為來源抄寫引擎時,請使用這些度量來分析日誌快取特有的抄寫活動。
日誌讀取器度量
(Log reader)
用於分析來源抄寫引擎的日誌讀取器特定抄寫活動。
日誌剖析器度量
(Log parser)
用於分析來源抄寫引擎上日誌剖析器特定的抄寫活動。
單一提取度量
(Single Scrape)
用於分析來源抄寫引擎上單一提取元件特定的抄寫活動。
來源引擎度量
(Source Engine)
用於分析來源引擎特定的抄寫活動。
通訊度量
(Communications)
用於分析在來源及目的引擎的抄寫活動期間,有關資料流程中的網路通訊變化情形。
目標引擎度量
(Target Engine)
用於分析目的引擎特定的抄寫活動。
目標套用度量
(Target Apply)
用於分析目標資料庫特定的抄寫活動。
   
請於「可用的度量值」清單中勾選欲監控的度量值,例如:「範圍內交易數-計數」、「已處理的來源資料庫位元組數」、「讀取的實體位元組數-位元組」以及「執行緒 CPU-毫秒/秒」。點擊「收集資料」按鈕後,右方視窗會立即顯示即時監控儀表板圖形。


一切準備就緒,我們可以開始在中控端主機執行 Python 程式,對 Oracle 資料庫中的 CREDIT_APP 資料表發動大量的新增、修改與刪除等 SQL 操作。包含:新增 100,000 筆資料、異動 40,000 筆資料、刪除指定範圍內的 10,000 筆資料。


最大化「監視」視圖的「活動 - 鏡映」視窗,從「度量值」表格中可以觀察到,來源端 Oracle 資料庫中的 SQL 操作均已讀取完成,但目的端 SQL Server 還在執行 SQL Update 操作的異動資料更新。


點擊切換到「監視」視圖的「效能」頁籤,從「瓶頸」與「延遲」分析圖中,可以明顯看到,目的端 SQL Server 已偵測到效能瓶頸的狀況,作業延遲時間也大幅增加。「瓶頸」分析圖會以長條圖的形式顯示可識別為瓶頸的五個內部元件,包含:「日誌讀取器」、「來源引擎」、「通訊」、「目標引擎」以及「目標資料庫」。長條圖的結果將協助我們區隔發生瓶頸的位置,當找出問題可能的位置後,我們就可以透過繪製該區域特有的圖表來執行更深入的分析。


這三個 SQL 操作的同步抄寫作業結束後,我們可以從「延遲」視窗中觀察到這三個 SQL 指令最高的延遲時間為 39 分 04 秒,平均延遲時間為:8 分 12 秒。


切換到「活動 - 鏡映」視窗,這裡可以檢視每個同步抄寫作業階段的每秒處理資料筆數以及累計完成資料筆數,若同步抄寫作業正在執行時,也可從「現行值/秒」欄位中看到作業當下的即時數據。勾選度量值項目最右方的「圖表」核選方塊,可以立即在右方看到隨著時間變化的度量值折線圖。


監視」視圖的「效能」頁籤可以讓系統管理者檢視、調查及診斷同步抄寫訂閱任務的效能問題,以便於找出非預期或異常延遲時間的原因。許多因素都可能會導致延遲的狀況發生,例如 CPU 速度、記憶體配置以及網路頻寬可能會影響同步抄寫的效能。此外,同步抄寫的配置設定也有可能是原因之一,以下是一些造成延遲的可能原因:
  • 網路頻寬不足,無法應付目前處理的交易量,導致來源資料表與目標資料表之間的變更同步延遲增加。
  • 來源端或目地端若正在執行密集的批次作業或背景程序,可能導致訂閱任務在這些程序執行期間出現延遲。
  • IDR 資料抄寫引擎正在同步包含大量資料的大型物件(LOB)欄位,這可能會影響整體同步的效能。
  • 目標資料庫上的應用程式可能因執行特定交易導致資料庫被鎖定(Table Lock),例如大批次刪除或更新等操作,這將迫使 IDR 資料抄寫引擎必須被迫等待鎖定釋放。
  • 資料表缺乏經過最佳化的索引或未定義主鍵(Primary Key),導致資料庫操作變慢,進而影響 IDR 資料抄寫引擎的整體效能。



4.使用快照(Snapshot)模式離線分析效能統計數據

為了分析同步抄寫作業的效能,IDR 管理主控台提供了兩種統計資料收集的模式:
  • 即時模式(Live Mode):用於即時監控多個訂閱任務的效能狀況。效能資料會依據「偏好設定」對話框中「統計歷史保留時間(分鐘)」所設定的時間範圍,暫存於記憶體中。此模式適合用於即時追蹤與觀察同步作業的即時效能變化。
  • 快照模式(Snapshot Mode):提供檢視一個或多個指定訂閱任務的歷史效能記錄功能。當我們首次在「效能」頁籤中新增訂閱並啟動資料收集時,系統會詢問是否要儲存資料;若選擇「是」,效能數據將會被記錄於一個 CSV 格式檔案中。日後我們可透過快照模式開啟該檔案,更一步分析與比較訂閱任務的執行效能。

快照模式非常適合用於同步抄寫訂閱任務在停止狀態下的事後離線效能分析,因為我們可以有更充分的時間來釐清效能瓶頸的發生原因,甚至可以透過比較不同的快照記錄檔提升問題排除的效率。請切換到「監視」視圖的「訂閱」頁籤,以滑鼠右鍵點擊 ORCL_TO_SQL_4 訂閱,於選單中點擊「結束抄寫」選項。並於「結束抄寫」視窗中點選「正常」結束方法。


切換回「效能」頁籤,點擊「Snapshot」功能按鈕,下方可以看到 IDR 管理主控台中已儲存的快照記錄檔。點擊選取最新的快照記錄檔,點擊下方「開啟 Snapshot」按鈕,即可開啟這個快照記錄。


在快照記錄清單中,每個記錄會標註訂閱任務名稱與資料收集起始時間。實際上,快照記錄會以檔案形式儲存在 IDR 管理主控台的本機端,我們可以在「偏好設定(Preferences)」對話框中,自行設定每個訂閱任務欲保留的檔案數量上限,以及單一檔案的最大大小限制。此外,每個快照記錄檔會收集訂閱任務從啟動到結束的所有效能統計數據,在開啟 Snapshot 時,可以在下方「時段」區段中選擇檢視「所有可用資料」或指定「日期範圍」的資料,這對於想要分析特定時間異常延遲的問題來說非常有幫助。





版權聲明
文章內容未經授權,請勿進行任何形式的複製、修改或發佈本文內容,如需轉載或引用,請在使用時注明出處並取得授權。本文中提及的特定公司、產品、品牌名稱等僅為描述目的,其版權歸屬於相應的公司或擁有者。

沒有留言:

張貼留言