事务处理日志设置和要求
了解如何为 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 用作源数据库时是必需的。
|
验证数据库级日志记录
要验证支持 Oracle GoldenGate Capture for the MySQL 数据库所需的数据库当前二进制日志记录设置,请执行以下查询。如果需要更改设置,请按照 Enable Database-level Logging 下的说明操作
-
以 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 配置文件、
my.cnffor Linux 或my.inifor Windows,以启用支持 MySQL 的 Oracle GoldenGate 捕获所需的系统变量。[root@srcdbserver ~]$ vi /etc/my.cnf -
要启用二进制日志,请使用首选项的登录框值将条目添加到配置文件,如下所示。
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 支持),为 Configuring Logging Properties 中列出的其他选项添加其他变量。
-
保存并关闭该文件。
-
重新启动数据库以使设置生效。
[root@srcdbserver ~]$ service mysqld restart -
使用以下命令检查数据库服务的状态:
[root@srcdbserver ~]$ service mysqld status
修改 Amazon 和 Azure MySQL Database 服务的系统变量
要为 Oracle GoldenGate 提取和心跳功能配置 Amazon 和 Azure MySQL 数据库,必须使用参数组、数据库创建或修改或服务器参数设置(如果尚未设置为所需值)进行所需的更改。使用以下准则修改这些系统变量:
-
要在 Amazon 中启用二进制日志记录,必须启用数据库的备份,否则
log_bin变量将报告为OFF,提取将异常终止,报告它无法检索binlog文件的列表。在创建数据库时启用备份,或者通过修改现有数据库来包含备份团。
-
对于 Amazon MySQL 数据库,如果实施 Oracle GoldenGate 心跳功能,则将
binglog_format变量设置为ROW,将binlog_row_image变量设置为FULL,将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
确保数据可用性
保留足够的二进制日志数据,以便在停止提取或存在计划外停机时,提取可以从其检查点重新开始。提取必须有权访问包含最早未提交工作单元的开始时间的二进制日志,以及此后的所有二进制日志。建议的保留期至少为 24 小时的事务处理数据,包括活动信息和归档信息。根据数据量和业务需求,您可能需要进行一些测试来确定最佳保留时间。
如果在活动日志或备份日志中未保留提取处理期间需要的数据,则可能需要以下更正操作之一:
-
变更提取以从具有二进制日志数据的较晚时间点进行捕获(并接受目标上可能的数据丢失)。
-
重新同步源表和目标表,然后重新启动 Oracle GoldenGate 环境。
可以根据 MySQL 数据库或变体使用不同的度量来增加二进制日志数据保留。
-
对于 MySQL Server、MySQL Heatwave、Azure Database for MySQL 和 MariaDB,可以增加变量
binlog_expire_logs_seconds以调整保留期。 -
对于 Amazon Aurora for MySQL 和 Amazon RDS for MySQL,默认的二进制日志保留设置是
NULL,这意味着对于 Aurora,日志将被延迟清除,对于 RDS,MySQL 不会保留日志。使用以下过程设置参数binlog保留小时数。例如:call mysql.rds_set_configuration('binlog retention hours', 24);
针对 MySQL 复制副本捕获
您可以将 Oracle GoldenGate 配置为从 MySQL 复制副本中捕获。
通常,在副本上应用的事务会记录到中继日志中,而不是记录到副本的 binlog 中。要使副本将从主数据库接收的事务写入到其 binlog 中,必须结合 Oracle GoldenGate 的其他二进制日志记录参数,使用 my.cnf 中的 log_replica_updates 选项作为 1 启动复制副本。在主数据库的事务位于副本的 binlog 中之后,您可以在副本上设置常规的 Oracle GoldenGate 提取以开始捕获。