本篇文章將延續《環境建置篇》完成的三台伺服器主機配置,實作 Oracle 資料庫與 Microsoft SQL Server 之間的標準與稽核模式資料表同步抄寫,整體架構如下圖所示。首先,我們將透過 IDR 管理主控台,分別建立與這兩個資料庫的連線。接著,新增二個訂閱任務:第一個是一對一資料表的標準同步鏡映訂閱(Mirror);第二個則是包含稽核軌跡記錄的一對一資料表稽核模式同步鏡映訂閱(LiveAudit)。啟動這兩個訂閱工作後,我們會在中控端主機執行 Python 程式,對 Oracle 資料庫中的 CREDIT_APP 資料表發動新增、修改與刪除等 SQL 操作,觀察資料是否正確同步至 SQL Server,並且分析整體同步作業的延遲時間。
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 1:標準與稽核模式同步抄寫
【文章目錄】
1.建立來源與目的端資料庫連線
在中控端主機中啟動 IDR 管理主控台(Management Console),並使用以下資訊連線至 IDR 存取伺服器(Access Server)。備註:這些連線資訊都是我們在環境建置時配置的設定。
- 使用者名稱:Admin。
- 密碼:!QAZ2wsx。
- 伺服器名稱(Access Server):輸入中控端主機 IP 192.168.140.32。
- 埠號:10101。
首先,我們需要在存取伺服器中新增 Oracle 來源端資料儲存庫。進入管理主控台後,切換至「存取權管理程式」視圖,於「資料儲存庫管理」頁籤中,點擊「新增資料儲存庫」按鈕。
在「新建資料儲存庫」視窗的「身分識別」區段中,使用以下資訊連線至 IDR 來源端資料抄寫引擎(IDR CDC Replication Engine for Oracle)。點擊「Ping」按鈕,經連線驗證後會自動帶出下方內容區段的資訊。確認無誤後就可以點擊「確定」按鈕。
- 名稱:Oracle_Source。
- 說明:Oracle DB - CREDIT_USER。
- 主機名稱:輸入來源端主機 IP 192.168.140.30。
- 埠號:10501。
接下來,我們需要為來源端資料儲存庫指派一個使用者。請使用滑鼠右鍵點擊資料儲存庫名稱 Oracle_Source,點擊「指派使用者」。在「選取使用者」視窗中,選擇我們在存取伺服器建立的使用者 Admin,點擊「確定」。輸入 Oracle DB 連線帳號與密碼:CREDIT_USER 和 !QAZ2wsx,點擊「確定」。
在「存取權管理程式」視圖中,我們可以再次確認存取伺服器已成功建立與 IDR 來源端資料抄寫引擎(IDR CDC Replication Engine for Oracle)的連線以及來源端資料儲存庫(Datastore)。在左上角的「資料儲存庫管理」頁籤中,可以觀察到來源端資料儲存庫 Oracle_Source 的連線類型、主機 IP 與連接埠、資料庫連線類型以及 IDR 引擎軟體版本。下方「使用者管理」頁籤,可以看到目前存取伺服器中已建立的使用者:Admin。右方「連線管理」頁籤中,則可以看到存取伺服器已使用 Admin 與來源端資料儲存庫 Oracle_Source 成功建立連線。
來源端配置完成後,繼續在存取伺服器中新增 SQL Server 目的端資料儲存庫。在管理主控台的「存取權管理程式」視圖的「資料儲存庫管理」頁籤中,點擊「新增資料儲存庫」按鈕。
在「新建資料儲存庫」視窗的「身分識別」區段中,使用以下資訊連線至 IDR 目的端資料抄寫引擎(IDR CDC Replication Engine for Microsoft SQL Server)。點擊「Ping」按鈕,經連線驗證後會自動帶出下方內容區段的資訊。確認無誤後就可以點擊「確定」按鈕。
- 名稱:SQLSERVER_Target。
- 說明:SQL Server - CREDIT_APPS。
- 主機名稱:輸入來源端主機 IP 192.168.140.31。
- 埠號:10501。
接下來,我們需要為目的端資料儲存庫指派一個使用者。請使用滑鼠右鍵點擊資料儲存庫名稱 SQLSERVER_Target,點擊「指派使用者」。在「選取使用者」視窗中,選擇使用者 Admin,點擊「確定」。輸入 SQL Server 連線帳號與密碼:sa 和 !QAZ2wsx,點擊「確定」。
我們同樣在「存取權管理程式」視圖中確認存取伺服器已成功建立與 IDR 目的端資料抄寫引擎(IDR CDC Replication Engine for Microsoft SQL Server)的連線以及目的端資料儲存庫(Datastore)。在左上角的「資料儲存庫管理」頁籤中,可以觀察到目的端資料儲存庫 SQLSERVER_Target 的連線類型、主機 IP 與連接埠、資料庫連線類型以及 IDR 引擎軟體版本。右方「連線管理」頁籤中,則可以看到存取伺服器已使用 Admin 與目的端資料儲存庫 SQLSERVER_Target 成功建立連線。
最後,補充有關存取伺服器使用者角色的說明。在管理主控台新增使用者時,可以依據實際需求授予該使用者合適的角色及功能權限。
角色 | 功能權限 |
---|---|
系統管理者 System Administrator |
可以在管理主控台中執行所有可用的作業。只有需要「監視」、「配置」以及「存取權管理程式」等三個視圖功能的使用者才應該指派系統管理員角色。系統管理者也可以修改系統參數來校準其抄寫環境。 |
管理者 Administrator |
可以存取管理主控台中的「監視」和「配置」等二個視圖功能。管理者可以建立新的訂閱、新增、匯入及匯出專案,但無法存取「存取權管理程式」視圖功能,並且無法新增或編輯使用者或資料儲存庫。管理者可以啟動及結束抄寫作業。 |
操作員 Operator |
可以存取管理主控台中的「監視」和「配置」等二個視圖功能。操作員可以新增、匯入及匯出專案,但無法建立新的訂閱。操作員也可以啟動、停止及監視抄寫作業;檢視選取要重新整理的表格,並對訂閱啟動重新整理;檢視訂閱或資料儲存庫所傳送的通知,但無法配置抄寫,以及從重新整理中選取或移除表格。 |
監視員 Monitor |
可以存取管理主控台中的「監視」視圖功能。監視者可以檢視事件及統計資料、檢視訂閱的抄寫狀態、檢視延遲臨界值資訊,但無法啟動或停止抄寫、配置抄寫、重新整理表格或檢視訂閱及資料儲存庫所傳送的通知。 |
2.配置一對一資料表標準同步鏡映(Mirror)
IDR 提供「重新整理(Refresh)」與「鏡映(Mirror)」等兩種資料表同步抄寫方法。在鏡映模式下,IDR 會持續監控並讀取來源資料庫日誌中的變更,並將這些變更即時同步至目標系統。在配置資料表對映時,除了選擇對映模式外,還需要指定對映類型,也就是選擇如何將來源資料表對映到目標資料表的方法。在標準模式(Standard)模式下,IDR 會將來源資料表中的異動操作完整複製到目標資料表。例如,當來源資料表中新增一筆資料時,目標資料表也會新增對應的該筆資料,依此類推。
接下來,我們就開始在管理主控台中新增一個一對一資料表標準同步鏡映(Mirror)抄寫訂閱(Subscription)。訂閱是指在 IDR 中定義的一個抄寫工作任務,每個訂閱包含對來源與目標資料儲存庫的配置,以及多個一對一資料表對映的配置與抄寫方法(稱為表格對映)。請切換至「配置」視圖,於「訂閱」頁籤中,點擊「建立新訂閱」按鈕。在「新建訂閱」視窗中,使用以下資訊建立一個新訂閱。
- 身分識別-名稱:ORCL_TO_SQL_1。
- 身分識別-說明:Oracle to SQL Mirror。
- 身分識別-專案:直接使用 預設專案。
- 資料儲存庫-來源:Oracle_Source。
- 資料儲存庫-目標:SQLSERVER_Target。
- 進階設定:在建立訂閱時,由於資料儲存庫不能有重複的 ID,因此我們需要開啟「進階訂閱設定」視窗指定來源 ID:ORCL_1。
ORCL_TO_SQL_1 訂閱建立完成後,請點擊「是」進行資料表對映配置。
在「對映表格」視窗中,對映模式選擇「多個一對一對映」,對映類型選擇「標準」,點擊「下一步」按鈕,我們將建立一個具有相同資料結構的一對一資料表對映配置。
接下來,進入到「選取來源表格」步驟。請於來源表格清單中,展開 Oracle_Source > CREDIT_USER 資料庫,勾選 CREDIT_APP 資料表,點擊「下一步」按鈕。備註:若需要挑選欄位可點擊「過濾直欄」按鈕,自行勾選欲進行資料同步抄寫的欄位。
由於我們在環境建置階段僅在目的端 Microsoft SQL Server 中建立 CREDIT_APPS 資料庫,尚未建立任何資料表。因此,可以選擇讓 IDR 資料抄寫引擎直接在目的端新建資料表,請選擇「建立新的目標表格」。備註:若目的端資料庫已建立對應之資料表,則應選擇「對映到現有目標表格」。
接著,我們需要為新目標表格選取綱目,請點擊目標綱目下方的「按一下以選取目標擁有者...」。在「選取目標」視窗中,選取 SQLSERVER_Target > dbo 做為目標綱目,點擊「確定」按鈕。
進入到「命名目標表格」步驟,選擇「與來源表格名稱相同」即可。點擊「下一步」按鈕。
在「設定抄寫方法」步驟,請選擇「鏡映(Mirror or Change Data Capture)」讓 IDR 資料抄寫引擎即時將來源資料表的異動同步抄寫到目標資料表。點擊「下一步」按鈕。備註:若配置來源與目的資料表的雙向同步抄寫,勾選「防止遞迴」可以避免將目的資料表的變更回寫至來源資料表。
完成鏡映(Mirror)訂閱的配置後,請點擊「完成」按鈕,讓 IDR 資料抄寫引擎進行資料表對映的初始化作業。
資料表對映初始化作業完成後,點擊表格對映項目,下方會顯示資料表欄位對映的細節。若需要進一步調整資料表欄位對映的設定,也可以在這裡完成。
如果我們直接連線到 SQL Server 中,可以觀察到 dbo.CREDIT_APPS 資料表的綱要(Schema)已建立,但尚未將來源資料表的內容同步到這個目標資料表。備註:當這個訂閱正式啟動後,IDR 資料抄寫引擎才會進行「重新整理(Refresh)」的初始化動作,也就是將來源資料表的全部資料先複製到目標資料表。這個動作僅會執行一次,確保來源與目標資料表的資料一致。
3.配置一對一資料表稽核模式同步鏡映(LiveAudit)
第一個訂閱任務配置完成後,我們可以接著進行第二個包含稽核軌跡記錄的一對一資料表稽核模式同步鏡映訂閱(LiveAudit)任務。回到「配置」視圖的「訂閱」頁籤中,點擊「建立新訂閱」按鈕。在「新建訂閱」視窗中,使用以下資訊建立第二個訂閱任務。
- 身分識別-名稱:ORCL_TO_SQL_2。
- 身分識別-說明:Oracle to SQL LiveAudit。
- 身分識別-專案:直接使用 預設專案。
- 資料儲存庫-來源:Oracle_Source。
- 資料儲存庫-目標:SQLSERVER_Target。
- 進階設定:在建立訂閱時,由於資料儲存庫不能有重複的 ID,因此我們需要開啟「進階訂閱設定」視窗指定來源 ID:ORCL_2。
ORCL_TO_SQL_2 訂閱建立完成後,請點擊「是」進行資料表對映配置。
在「對映表格」視窗中,對映模式選擇「多個一對一對映」,對映類型選擇「LiveAudit」,點擊「下一步」按鈕,我們將建立一個具有相同資料結構的一對一資料表對映配置(並且使用預設的 LiveAudit 稽核模式)。
接著在「定義審核直欄」步驟,直接使用預設的三個稽核欄位。「日誌登載控制欄位」也就是 IDR 資料抄寫引擎讀取來源端資料庫日誌所擷取的日誌控制欄位(Journal Control Fields),用於記錄有關來源資料庫系統交易日誌條目(Transaction log entry)的相關資訊,例如異動行為、異動類型、異動人員及異動時間等資訊。「直欄名稱」則是目標資料表中用於對映「日誌登載控制欄位」的欄位,這些欄位將於初始化時一併建立於來源資料表中。
下表為 IDR 資料抄寫引擎支援的日誌登載控制欄位,有關這些欄位的完整說明,請參閱官方文件:《Using journal control fields for auditing replication activities》。
# | 控制欄位名稱 | 介面上的中文名稱 | 欄位說明 |
---|---|---|---|
1 | Commit Cycle ID (&CCID) | 確定循環 ID | 具有插入、刪除或更新作業之交易的 ID。 |
2 | Source RRN (&CNTRRN) | 來源 RRN | 記錄日誌登載項目之來源表格的相對記錄號碼。 |
3 | Entry Type Code (&CODE) | 項目類型代碼 | 識別異動日誌項目類型的代碼。 |
4 | Entry Type (&ENTTYP) | 項目類型 | 指出更新的類型。 |
5 | Source Job Name (&JOB) | 來源工作名稱 | 在來源系統上進行更新的工作名稱。 |
6 | Source Job Number (&JOBNO) | 來源工作號碼 | 更新程序的作業系統使用者 ID。 |
7 | Source Job User (&JOBUSER) | 來源工作使用者 | 更新時的作業系統使用者。 |
8 | Journal Name (&JOURNAL) | 日誌登載名稱 | 日誌登載的名稱。 |
9 | Source Table Library (&LIBRARY) | 來源表格檔案庫 | 來源表格綱目或其別名的名稱。 |
10 | Source Table Member Name (&MEMBER) | 來源表格成員名稱 | 來源表格或其別名的名稱。 |
11 | Source Table Name (&OBJECT) | 來源表格名稱 | 來源表格或其別名的名稱。 |
12 | Source Program Name (&PROGRAM) | 來源程式名稱 | 進行更新之來源系統上的程式名稱。 |
13 | Journal Sequence Number (&SEQNO) | 日誌登載序號 | 此更新在日誌登載中的序號。 |
14 | Source Server Name (&SYSTEM) | 來源伺服器名稱 | 來源系統的主機名稱。 |
15 | Record Modification Time (&TIMSTAMP) | 記錄修改時間 | 在來源上進行更新或重新整理的日期和時間。 |
16 | Record Modification User (&USER) | 記錄修改使用者 | 在來源上進行更新的使用者 ID。 |
接下來,進入到「選取來源表格」步驟。請於來源表格清單中,展開 Oracle_Source > CREDIT_USER 資料庫,勾選 CREDIT_APP 資料表,點擊「下一步」按鈕。
同樣選擇讓 IDR 資料抄寫引擎直接在目的端新建資料表,請選擇「建立新的目標表格」,點擊「下一步」按鈕。
接著,我們需要為新目標表格選取綱目,請點擊目標綱目下方的「按一下以選取目標擁有者...」。在「選取目標」視窗中,選取 SQLSERVER_Target > dbo 做為目標綱目,點擊「確定」按鈕。
進入到「命名目標表格」步驟,為了讓這二個資料表有所區隔,請選擇「來源表格名稱加上字首/或字尾」,並且在下方「字尾」欄位輸入:_AUDIT。點擊「下一步」按鈕。
完成 LiveAudit 訂閱的配置後,請點擊「完成」按鈕,讓 IDR 資料抄寫引擎進行資料表對映的初始化作業(LiveAudit 模式本身即屬於 Mirror 抄寫,只是可以在同步抄寫過程中在目標資料表中加入稽核所需欄位)。
資料表對映初始化作業完成後,點擊表格對映項目,下方會顯示資料表欄位對映的細節。我們可以觀察到,除了原始的六個欄位以外,下方增加了三個預設的日誌登載控制欄位。
為了提升 Audit_Type 欄位的可讀性,我們可以建立一個衍生表達式(Derived Expressions)實作欄位內容的格式化轉換。請於下方「直欄對映」頁籤中,點擊展開「表示式」。滑鼠雙擊「新建表示式」項目。
請於「表示式」文字輸入欄位中輸入以下表示式內容:
%IF(&ENTTYP="RS","Refresh Clear",%IF(&ENTTYP="RR","Refresh Insert",%IF(&ENTTYP="PT","Insert",%IF(&ENTTYP="UB","Update Before",%IF(&ENTTYP="UP","Update After",%IF(&ENTTYP="DL","Delete","Unknown"))))))
輸入完成後,點擊「儲存」。待「儲存表示式」視窗出現後,輸入表示式名稱:Convert_Audit_Type,點擊「確定」。
這個表達式主要的目的係將 Entry Type (&ENTTYP) 由編碼轉換為可識別性高的異動類型名稱,有關編碼與異動類型的對應,請參考下方表格的說明。
編碼 | 異動類型 | 說明 |
---|---|---|
RS | Refresh Clear | 在重新整理之前,已在來源資料庫中清除檔案、資料表或成員。 |
RR | Refresh Insert | 已重新整理來源資料庫中資料表的所有資料。 |
PT | Insert | 已在來源資料庫中新增資料表的資料。 |
UB | Update Before | 在來源資料庫中更新資料表資料之前的資料。 |
UP | Update After | 已在來源資料庫中更新資料表資料後的資料。 |
DL | Delete | 已在來源資料庫中刪除資料表的資料。 |
表達式建立完成後,請以滑鼠點選按住 Convert_Audit_Type 表示式名稱,直接拖曳到右方「來源」欄位列表中的「&ENTTYP」欄位上方,然後放開滑鼠進行置換。
確認「&ENTTYP」欄位已成功置換為 Convert_Audit_Type 表示式內容後,點擊「儲存」按鈕,完成對一對一資料表稽核模式同步鏡映訂閱(LiveAudit)任務的配置。
4.啟動 Oracle to SQL Server 資料同步抄寫訂閱
到目前為止,我們已經使用 IDR 管理主控台完成了一對一資料表的標準同步鏡映訂閱(ORCL_TO_SQL_1)以及包含稽核軌跡記錄的一對一資料表稽核模式同步鏡映訂閱(ORCL_TO_SQL_2)等二項訂閱任務,接下來就可以開始啟動它們,讓 IDR 資料抄寫引擎即時偵測 Oracle 資料庫發生的異動。請切換到「監視」視圖,從右方清單可以看到在預設專案中包含這二個資料同步抄寫訂閱任務。
首先,請點擊選取 ORCL_TO_SQL_1 訂閱。開始啟動之前,先點擊下方「收集統計資料」按鈕,讓 IDR 資料抄寫引擎可以即時收集同步抄寫過程中的效能數據,方便我們後續進行分析。以滑鼠右鍵點擊 ORCL_TO_SQL_1 訂閱,於選單中點擊「開始鏡映」選項。
當啟動訂閱並開始執行資料表鏡映抄寫時,管理主控台會提示我們選擇鏡映方法,選項包括「連續(Continuous)」與「預定結束(Scheduled End)」。前者會以不中斷的方式持續同步來源與目標資料表,直到停止該訂閱。後者則會立即開始同步來源與目標資料表,並於指定的結束條件(如日期與時間或資料庫日誌位置)滿足時,自動停止同步抄寫訂閱。鏡映方法請點選「連續」,點擊「確定」按鈕,啟動 ORCL_TO_SQL_1 訂閱任務。
ORCL_TO_SQL_1 訂閱啟動後,IDR 資料抄寫引擎會先執行「重新整理」工作,也稱為快照(Snapshot),主要是將來源資料表的完整副本抄寫到目標資料表(Table copy)。在左方的監控儀表板可以立即觀察到,目前正在執行的「重新整理」工作數量,右方的「狀態」欄位則會顯示:鏡映之前重新整理。當「重新整理」工作完成後,ORCL_TO_SQL_1 訂閱的狀態會變更為:連續鏡映,表示 IDR 資料抄寫引擎開始即時監控 Oracle 資料庫的交易日誌,並將 CREDIT_APP 資料表的異動抄寫到 SQL Server 中的 CREDIT_APP 資料表。
接著,點擊選取 ORCL_TO_SQL_2 訂閱。先點擊下方「收集統計資料」按鈕,讓 IDR 資料抄寫引擎可以即時收集同步抄寫過程中的效能數據。以滑鼠右鍵點擊 ORCL_TO_SQL_2 訂閱,於選單中點擊「開始鏡映」選項。
鏡映方法請點選「連續」,點擊「確定」按鈕,啟動 ORCL_TO_SQL_2 訂閱任務。
待 IDR 資料抄寫引擎完成「重新整理」工作後,確認 ORCL_TO_SQL_2 訂閱的狀態已變更為:連續鏡映,表示 IDR 資料抄寫引擎開始即時監控 Oracle 資料庫的交易日誌,並將 CREDIT_APP 資料表的異動抄寫到 SQL Server 中的 CREDIT_APP_AUDIT 資料表。
5.對來源資料表執行 SQL 操作並觀察同步抄寫結果
一切準備就緒,我們可以開始在中控端主機執行 Python 程式,對 Oracle 資料庫中的 CREDIT_APP 資料表發動新增、修改與刪除等 SQL 操作,觀察資料是否正確同步至 SQL Server,並且分析整體同步延遲時間。首先,可以先檢視 CREDIT_APP 來源資料表目前共有 100 筆資料。
再來,檢視 SQL Server 目標資料表的資料筆數及內容,確認 IDR 資料抄寫引擎執行「重新整理」工作後的結果。由下圖可以觀察到,目的端 CREDIT_APP 資料表共有 100 筆資料,CREDIT_APP_AUDIT 資料表則有 101 筆資料。仔細觀察 CREDIT_APP_AUDIT 資料表的內容,應該可以發現到第一筆資料的「Aud_Type」欄位值為 Refresh Clear,表示 IDR 資料抄寫引擎在執行「重新整理」工作前會先清除資料表中的所有內容。此外,CREDIT_APP_AUDIT 資料表相較於 CREDIT_APP 資料表多了「Aud_Type」、「Aud_Time」以及「Aud_User」等三個稽核欄位,這也就是 LiveAudit 稽核模式與 Mirror 模式最主要的差異。
我們先使用 Python 程式在來源端 CREDIT_APP 資料表中新增 2,000 筆資料,除 SK_ID_CURR 為指定之 ID 區間(201,000 ~ 202,999),其餘欄位均以隨機方式填入指定的資料。
下圖是 SQL Server 目標資料表的同步抄寫結果,上方顯示 CREDIT_APP(Mirror 模式)資料表內容,下方顯示 CREDIT_APP_AUDIT(LiveAudit 模式)資料表內容。比對「LAST_UPDATED」與「Aud_Time」這二個 TimeStamp 欄位的內容,應該可以觀察到二著之間的時間差異不到 1 秒鐘,這足以驗證 IDR 資料抄寫引擎實現近乎即時同步抄寫的能力。備註:由於 Oracle 資料庫與 Microsoft SQL Server 對於 TimeStamp 欄位的小數點後位數定義不同,因此造成在 SQL Server 中無法正常顯示小數點後的數值,我們將在下一篇《Part 2:自訂客製化稽核欄位》跟大家說明如何克服這個問題。
接著,我們使用 Python 程式在來源端 CREDIT_APP 資料表對剛才新增的 2,000 筆資料執行二個欄位內容的變更(SQL Update 指令)。
下圖是 SQL Server 目標資料表的同步抄寫結果,上方顯示 CREDIT_APP(Mirror 模式)資料表內容,下方顯示 CREDIT_APP_AUDIT(LiveAudit 模式)資料表內容。再次比對「LAST_UPDATED」與「Aud_Time」這二個 TimeStamp 欄位的內容,二著之間的時間差異同樣不到 1 秒鐘。此外,LiveAudit 模式會讓 CREDIT_APP_AUDIT 資料表的筆數遠大於 CREDIT_APP 資料表,這是因為 IDR 資料抄寫引擎對同一個 SQL Update 指令會記錄變更前(Updte Before)與變更後(Update After)的資料。
最後,我們使用 Python 程式在來源端 CREDIT_APP 資料表中刪除 1,000 筆資料(SQL Delete 指令)。
下圖是 SQL Server 目的資料表的同步抄寫結果,上方顯示 CREDIT_APP(Mirror 模式)資料表內容,下方顯示 CREDIT_APP_AUDIT(LiveAudit 模式)資料表內容。由於 SQL Delete 指令較無法觀察來源與目標資料表之間的操作時間差異,但從 CREDIT_APP 資料表的筆數從 2,100 筆變為 1,100 筆也可以知道 IDR 資料抄寫引擎已正確完成同步的工作。此外,LiveAudit 模式也會同步記錄資料刪除的行為,因此 CREDIT_APP_AUDIT 資料表的筆數額外增加了這 1,000 筆 SQL Delete 指令的操作記錄。
完成這三個 SQL 操作,我們進一步檢視 IDR 資料同步抄寫的作業延遲與分析度量值。在「延遲」視窗中,可以知道這三個 SQL 操作的總作業延遲時間,最高為 1:57 秒、最低為 0:00 秒、平均值則為 7 秒。此外,在「活動」視窗可以清楚知道來源端與目的端包含新增(INSERT)、修改(UPDATE)、刪除(DELETE)等 SQL 操作的資料筆數與每秒處理交易筆數等分析數據。這裡除了可以確認來源端與目的端各項 SQL 操作的數量是否一致之外,還可以從每秒處理交易筆數評估來源端與目的端主機的處理性能。
下一篇 》 Part 2:自訂客製化稽核欄位
版權聲明
文章內容未經授權,請勿進行任何形式的複製、修改或發佈本文內容,如需轉載或引用,請在使用時注明出處並取得授權。本文中提及的特定公司、產品、品牌名稱等僅為描述目的,其版權歸屬於相應的公司或擁有者。
沒有留言:
張貼留言