交易記錄設定與需求
瞭解如何為 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 作為來源資料庫時需要。如果設為
|
binlog retention hours |
1 - 168 |
在支援的情況下,此系統變數會以小時為單位設定二進位日誌到期期間。 | 建議值為:>=24 |
binlog_row_image |
FULL, MINIMAL, NOBLOB |
在二進位日誌中設定不同層次之資料欄層次記錄日誌的系統變數。 | 使用 MySQL 作為來源資料庫時需要。
|
binlog_row_metadata |
FULL, MINIMAL |
設定新增至二進位日誌以進行資料列式日誌記錄之描述資料的系統變數。 | 使用 MySQL 8.0 或更新版本作為 DDL 支援的來源資料庫時為必要項目。
|
event_scheduler |
ON, OFF |
允許建立活動訊號更新與永久清除工作的系統變數。 | 實行 Oracle GoldenGate 活動訊號功能的必要項目。
|
log_bin |
ON, OFF |
顯示二進位記錄狀態的系統變數。 | 使用 MySQL 作為來源資料庫時需要。如果還不是 ON,請指派名稱來設定,例如 log-bin=binlog. |
log_replica_updates |
ON, OFF |
從主要伺服器接收時,會將更新記錄至次要伺服器本身之二進位日誌的系統變數。 | 使用 MySQL 作為來源資料庫,且設定為從複本伺服器擷取時為必要。
|
server_id |
0 - 4294967295 |
啟用二進位記錄日誌時,必須指定系統變數。對於主要複製和每個複製複本,請確定值大於 0 且是唯一的。 | 使用 MySQL 作為來源資料庫時需要。
|
驗證資料庫層級記錄日誌
若要驗證支援 MySQL 資料庫之 Oracle GoldenGate Capture 所需的資料庫目前二進位記錄日誌設定值,請執行下列查詢。如果需要變更設定值,請依照啟用資料庫層級記錄日誌底下的指示進行
-
以 root 或指派的資料庫服務管理員帳戶登入 MySQL。
[root@srcdbserver ~]$ mysql -uroot -p -
發出下列命令以判斷資料庫是否啟用二進位記錄日誌。如果結果為 ON,則會啟用資料庫二進位日誌。
show variables like 'log_bin'; -
發出下列命令,以判斷資料庫是否啟用正確的二進位日誌設定值和
server_id。確定binlog_format值設為ROW,binlog_row_image和binlog_row_metadata設為FULL,且server_id變數設為>=1,且主要和所有複本都是唯一的。show variables like 'binlog_%'; show variables like 'server_id'; -
重複此程序,根據您的需求 (例如 DDL 支援和 MariaDB 支援),查詢設定記錄特性中所列其他選項的變數。
啟用資料庫層次記錄日誌
視需要執行下列步驟,以啟用支援 MySQL 資料庫之 Oracle GoldenGate Capture 所需的資料庫二進位記錄日誌設定值。請只根據驗證資料庫層次記錄日誌的結果,修改需要啟用或變更的設定值。
-
編輯 MySQL 組態檔、Linux 的
my.cnf或 Windows 的my.ini,以啟用支援 MySQL 之 Oracle GoldenGate 擷取所需的系統變數。[root@srcdbserver ~]$ vi /etc/my.cnf -
若要啟用二進位日誌,請使用您偏好設定的 log-bin 值,將項目新增至組態檔 (如下所示)。
log-bin=*binlog* -
若要設定正確的二進位記錄日誌格式和
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 -
根據您的需求 (例如 DDL 支援和 MariaDB 支援),為設定記錄特性中所列的其他選項新增其他變數。
-
儲存並關閉檔案。
-
重新啟動資料庫以讓設定值生效。
[root@srcdbserver ~]$ service mysqld restart -
使用下列命令檢查資料庫服務的狀態:
[root@srcdbserver ~]$ service mysqld status
修改 Amazon 和 Azure MySQL Database 服務的系統變數
若要設定 Amazon 和 Azure MySQL 資料庫的 Oracle GoldenGate Extract 和活動訊號功能,必須使用參數群組、建立或修改資料庫或伺服器參數設定值 (如果尚未設為必要值) 來進行必要的變更。請使用下列準則來修改這些系統變數:
-
若要在 Amazon 啟用二進位記錄日誌,您必須啟用資料庫備份,否則
log_bin變數將報告為OFF,Extract 將會中止,報告它無法擷取binlog檔案的清單。在建立資料庫時啟用備份,或修改現有資料庫以包含備份規則。
-
若為 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/
-
若為 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 在處理期間所需的資料 (在作用中或備份日誌中),則可能需要下列其中一個更正動作:
-
更改 Extract 可從日後可用的二進位日誌資料點擷取 (並接受目標可能的資料遺失)。
-
重新同步來源和目標表格,然後重新啟動 Oracle GoldenGate 環境。
視 MySQL 資料庫或變體而定,可以使用不同的計量來增加二進位日誌資料保留。
-
對於 MySQL Server、MySQL Heatwave、Azure Database for MySQL 和 MariaDB,您可以增加變數
binlog_expire_logs_seconds來調整保留期間。 -
對於 MySQL 的 Amazon Aurora 和 MySQL 的 Amazon RDS,預設的二進位日誌保留設定值為
NULL,這表示對於 Aurora,日誌會延遲永久清除,而對於 MySQL 的 RDS 則不會保留。請使用下列程序來設定參數binlog保留時數。舉例而言:call mysql.rds_set_configuration('binlog retention hours', 24);
依據 MySQL 複製複本擷取
您可以將 Oracle GoldenGate 設定為從 MySQL 複製複本擷取。
通常,複本套用的交易會記錄在中繼日誌中,而不是記錄在複本的 binlog 中。若要讓複本將從主要接收的交易寫入其 binlog,您必須以 my.cnf 中的 log_replica_updates 選項作為 1 啟動複製複本,並搭配 Oracle GoldenGate 的其他二進位記錄參數。主要的交易在複本的 binlog 之後,您可以在複本上設定一般 Oracle GoldenGate Extract 以開始擷取。