数据库配置
了解支持的 MySQL 数据库、所需的设置,以及如何在为 Oracle GoldenGate 配置 MySQL 时准备要处理的表。
支持的数据库
Oracle GoldenGate for MySQL 支持捕获和交付 MySQL、Oracle MySQL Heatwave、Amazon Aurora MySQL、Amazon RDS for MariaDB、Amazon RDS for MySQL、Azure Database for MySQL、Google Cloud SQL for MySQL 和 MariaDB。
Oracle GoldenGate 支持使用 Oracle GoldenGate for MySQL Replicat 交付到 SingleStoreDB 和 SingleStoreDB 云。
支持在单主模式下使用组复制配置的 MySQL 的捕获和传送。有关更多信息,请参见 Using Oracle GoldenGate with MySQL Group Replication 。
有关支持的数据库和版本的完整列表,请查看您的 Oracle GoldenGate 版本的认证矩阵。
支持的限制
以下是 Oracle GoldenGate 对 MySQL 的支持限制:
-
Oracle GoldenGate 提取不支持启用二进制日志事务处理压缩的 MySQL 数据库。
-
Oracle GoldenGate 提取不支持启用二进制日志加密的 MySQL 数据库。
数据库存储引擎
数据库存储引擎的要求如下:
-
Oracle GoldenGate 支持源 MySQL 数据库的 InnoDB 存储引擎。
-
Oracle GoldenGate 支持从 InnoDB 引擎捕获和应用。应用到 MyISAM 引擎可以工作,但由于 MyISAM 引擎是非事务的,因此可能存在数据完整性问题。
数据库字符集
MySQL 提供了一个工具,允许用户在不同的级别指定不同的字符集。
| 级别 | 示例 |
|---|---|
| 数据库 | create database test charset utf8; |
| 表 | create table test( id int, name char(100)) charset utf8; |
| 列 | create table test ( id int, name1 char(100) charset gbk, name2 char(100) charset utf8)); |
支持的限制
-
多字节字符集不支持二进制整理。例如,当字符集为
utf8mb4时,不要将collation_server变量设置为等于utf8mb4_bin。 -
不支持以下字符集:
-
armscii8 -
geostd8 -
keybcs2 -
utf16le
-
设置会话字符集
从命令行界面 (Admin Client) 连接到数据库时,提取和复制进程使用会话字符集。对于 MySQL,会话字符集取自 SOURCEDB 的 SESSIONCHARSET 选项和 TARGETDB 参数。
请确保在配置 Oracle GoldenGate 时使用以下方式之一指定会话字符集。
为远程捕获配置 MySQL
用于 MySQL 的 Oracle GoldenGate 远程捕获、用于 MySQL 的 Amazon RDS、用于 MySQL 的 Amazon Aurora MySQL、用于 MySQL 的 Azure 数据库用于从远程到 Oracle GoldenGate 安装的数据库捕获事务处理日志数据。
数据库服务器配置
要使远程捕获工作,请按如下方式配置 MySQL 服务器:
-
向 Oracle GoldenGate 远程捕获用户授予访问权限。
对远程数据库运行以下语句,以创建用户并授予远程捕获所需的权限。
CREATE USER '*username*'@'*host*' IDENTIFIED BY '*Password*'; GRANT ALL PRIVILEGES ON *.* TO '*username*'@'*host*' WITH GRANT OPTION; FLUSH PRIVILEGES; -
远程 MySQL 服务器的
server_id值应大于 0。可以通过在 MySQL 远程服务器上发出以下语句来验证此值:SHOW VARIABLES LIKE '*server_id*';如果
server_id值为 0,请修改my.cnf配置文件以设置为大于 0 的值。
Oracle GoldenGate 配置
Oracle GoldenGate 配置具有以下步骤:
-
在提取的参数文件中提供远程数据库的连接信息。
SOURCEDB remotedb@mysqlserver.company.com:port, USERID username, PASSWORD password -
在连接信息之后,将以下参数添加到提取的参数文件中。
TRANLOGOPTIONS ALTLOGDEST REMOTE
MySQL 的 Oracle GoldenGate 远程捕获限制
支持 Oracle GoldenGate 与 MySQL 原生复制从属服务器的 MySQL 远程捕获共存,但存在以下条件和限制:
-
Oracle GoldenGate for MySQL 远程捕获不支持导致映像大小超过 1 GB 的更新操作。
在更新操作中,当映像之前和之后的组合大小超过 1 GB 时,远程捕获 API 将从 MySQL 服务器收到以下错误:
log event entry exceeded max_allowed_packet -
应为本机复制从属服务器分配与当前运行的从属服务器不同的 server_id。可使用主服务器上的以下 MySQL 命令查看从属服务器 server_id 值。
SHOW SLAVE HOSTS;-
如果 Oracle GoldenGate 捕获异常并出现错误
"A slave with the same server_uuid or server_id as this slave has connected to the master",则更改捕获的名称并重新启动捕获。 -
如果本机复制从属服务器死于错误
"A slave with the same server_uuid or server_id as this slave has connected to the master",则更改本机复制从属服务器的server_id并将其重新启动。
-
-
在 Linux 上运行的 Oracle GoldenGate 支持远程捕获,并且可以支持在 Linux 或 Windows 上运行的数据库。