交易記錄設定與需求

瞭解如何為 Oracle GoldenGate 準備 MySQL 資料庫和支援的變體,包括必要的二進位記錄設定和資料庫伺服器變數。

設定記錄日誌特性

Oracle GoldenGate 依賴 MySQL 二進位日誌來儲存複製來源交易所需的資料。必須先正確設定來源系統上的二進位日誌,才能開始進行 Oracle GoldenGate 處理。

此段落說明適用於 Oracle GoldenGate for MySQL 的下列二進位日誌啟動選項和系統變數。

記錄日誌選項 值 它的作用 需求
binlog_annotate_row_events ON, OFF 告知主要伺服器將這些事件寫入二進位日誌的系統變數。 MariaDB 和 Oracle GoldenGate 23.8 和更舊版本需要。OFF
binlog_expire_logs_seconds 0 - 4294967295 在支援的情況下,此系統變數會設定二進位日誌到期期間 (秒)。 建議值為:>=86400
binlog_format ROW, STATEMENT, MIXED 設定二進位記錄日誌格式的系統變數。

使用 MySQL 作為來源資料庫時需要。如果設為 MIXED 或 STATEMENT,則只會擷取 ROW 層次交易。

ROW

binlog retention hours 1 - 168 在支援的情況下,此系統變數會以小時為單位設定二進位日誌到期期間。 建議值為:>=24
binlog_row_image FULL, MINIMAL, NOBLOB 在二進位日誌中設定不同層次之資料欄層次記錄日誌的系統變數。

使用 MySQL 作為來源資料庫時需要。

FULL

binlog_row_metadata FULL, MINIMAL 設定新增至二進位日誌以進行資料列式日誌記錄之描述資料的系統變數。

使用 MySQL 8.0 或更新版本作為 DDL 支援的來源資料庫時為必要項目。

FULL

event_scheduler ON, OFF 允許建立活動訊號更新與永久清除工作的系統變數。

實行 Oracle GoldenGate 活動訊號功能的必要項目。

ON

log_bin ON, OFF 顯示二進位記錄狀態的系統變數。 使用 MySQL 作為來源資料庫時需要。如果還不是 ON,請指派名稱來設定,例如 log-bin=binlog.
log_replica_updates ON, OFF 從主要伺服器接收時,會將更新記錄至次要伺服器本身之二進位日誌的系統變數。

使用 MySQL 作為來源資料庫,且設定為從複本伺服器擷取時為必要。

ON

server_id 0 - 4294967295 啟用二進位記錄日誌時,必須指定系統變數。對於主要複製和每個複製複本,請確定值大於 0 且是唯一的。

使用 MySQL 作為來源資料庫時需要。

>=1

驗證資料庫層級記錄日誌

若要驗證支援 MySQL 資料庫之 Oracle GoldenGate Capture 所需的資料庫目前二進位記錄日誌設定值,請執行下列查詢。如果需要變更設定值,請依照啟用資料庫層級記錄日誌底下的指示進行

  1. 以 root 或指派的資料庫服務管理員帳戶登入 MySQL。

    [root@srcdbserver ~]$ mysql -uroot -p
  2. 發出下列命令以判斷資料庫是否啟用二進位記錄日誌。如果結果為 ON,則會啟用資料庫二進位日誌。

    show variables like 'log_bin';
  3. 發出下列命令,以判斷資料庫是否啟用正確的二進位日誌設定值和 server_id。確定 binlog_format 值設為 ROW,binlog_row_image 和 binlog_row_metadata 設為 FULL,且 server_id 變數設為 >=1,且主要和所有複本都是唯一的。

    show variables like 'binlog_%';
    show variables like 'server_id';
  4. 重複此程序,根據您的需求 (例如 DDL 支援和 MariaDB 支援),查詢設定記錄特性中所列其他選項的變數。

啟用資料庫層次記錄日誌

視需要執行下列步驟,以啟用支援 MySQL 資料庫之 Oracle GoldenGate Capture 所需的資料庫二進位記錄日誌設定值。請只根據驗證資料庫層次記錄日誌的結果,修改需要啟用或變更的設定值。

  1. 編輯 MySQL 組態檔、Linux 的 my.cnf 或 Windows 的 my.ini,以啟用支援 MySQL 之 Oracle GoldenGate 擷取所需的系統變數。

    [root@srcdbserver ~]$ vi /etc/my.cnf
  2. 若要啟用二進位日誌,請使用您偏好設定的 log-bin 值,將項目新增至組態檔 (如下所示)。

    log-bin=*binlog*
  3. 若要設定正確的二進位記錄日誌格式和 server_id 變數,請設定下列項目:

    binlog-format=ROW
    binlog-row-image=FULL
    
    #For MySQL 8.0 and above, for DDL support
    binlog-row-metadata=FULL
    
    #Set to value > 0 and <= 4294967295
    server-id=1
  4. 根據您的需求 (例如 DDL 支援和 MariaDB 支援),為設定記錄特性中所列的其他選項新增其他變數。

  5. 儲存並關閉檔案。

  6. 重新啟動資料庫以讓設定值生效。

    [root@srcdbserver ~]$ service mysqld restart
  7. 使用下列命令檢查資料庫服務的狀態:

    [root@srcdbserver ~]$ service mysqld status

修改 Amazon 和 Azure MySQL Database 服務的系統變數

若要設定 Amazon 和 Azure MySQL 資料庫的 Oracle GoldenGate Extract 和活動訊號功能,必須使用參數群組、建立或修改資料庫或伺服器參數設定值 (如果尚未設為必要值) 來進行必要的變更。請使用下列準則來修改這些系統變數:

  1. 若要在 Amazon 啟用二進位記錄日誌,您必須啟用資料庫備份,否則 log_bin 變數將報告為 OFF,Extract 將會中止,報告它無法擷取 binlog 檔案的清單。

    在建立資料庫時啟用備份,或修改現有資料庫以包含備份規則。

  2. 若為 Amazon MySQL 資料庫,請將 binglog_format 變數設為 ROW,將 binlog_row_image 變數設為 FULL,如果實行 Oracle GoldenGate 活動訊號功能,則將 event_scheduler 設為 ON,如果啟用 DDL 擷取支援,則將 binlog_row_metadata 變數設為 FULL。

    依照 Amazon 提供的指示建立或編輯現有的「參數」群組,以便進行這些變更。

    https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/

  3. 若為 Azure MySQL 資料庫,請將 binlog_format 變數設為 ROW,並將 binlog_row_image 變數設為 FULL。依照 Microsoft 提供的指示修改資料庫執行處理的伺服器參數設定值。

    https://docs.microsoft.com/en-us/azure/mysql/howto-server-parameters

確保資料可用性

保留足夠的二進位日誌資料,以便在您停止 Extract 或發生非計畫性停機時,可以從其檢查點重新開始 Extract。Extract 必須能夠存取包含最早未確認工作單位開始的二進位日誌,以及之後的所有二進位日誌。建議的保留期間至少為 24 小時的交易資料,包括作用中和存檔的資訊。您可能需要進行一些測試,根據資料量和業務需求來確定最佳的保留時間。

如果未保留 Extract 在處理期間所需的資料 (在作用中或備份日誌中),則可能需要下列其中一個更正動作:

視 MySQL 資料庫或變體而定,可以使用不同的計量來增加二進位日誌資料保留。

依據 MySQL 複製複本擷取

您可以將 Oracle GoldenGate 設定為從 MySQL 複製複本擷取。

通常,複本套用的交易會記錄在中繼日誌中,而不是記錄在複本的 binlog 中。若要讓複本將從主要接收的交易寫入其 binlog,您必須以 my.cnf 中的 log_replica_updates 選項作為 1 啟動複製複本,並搭配 Oracle GoldenGate 的其他二進位記錄參數。主要的交易在複本的 binlog 之後,您可以在複本上設定一般 Oracle GoldenGate Extract 以開始擷取。