将数据从 PostgreSQL 复制到 MySQL
了解如何使用 OCI GoldenGate 将数据从 PostgreSQL 复制到 MySQL。
开始之前
要成功完成此快速入门,您必须具有以下各项:
-
PostgreSQL 安装,用作源数据库(请参阅“环境设置”)
-
在 VCN 的安全列表中打开端口 5432
-
充当目标数据库的 HeatWave 数据库。
环境设置:PostgreSQL
要为此快速入门设置环境,请执行以下操作:
-
运行以下命令以安装 PostgreSQL 。
-
安装 PostgreSQL 服务器:
sudo yum install postgresql-server -
安装 postgresql-contrib 模块以避免此 SQL 异常错误:
sudo yum install postgresql-contrib -
创建新的 PostgreSQL 数据库集群:
sudo postgresql-setup --initdb -
启用 postgresql.service:
sudo systemctl enable postgresql.service -
启动 postgresql.service:
sudo systemctl start postgresql.service
-
-
默认情况下,PostgreSQL 仅允许本地连接。允许远程连接到 PostgreSQL 。
-
在
/var/lib/pgsql/data/postgresql.conf中,为复制准备数据库。 -
找到并取消注释
listen_addresses = 'localhost'并将 localhost 更改为星号 (`):listen_addresses = '*' -
按如下方式设置以下参数:
-
wal_level = logical -
max_replication_slots = 1 -
max_wal_senders = 1 -
track_commit_timestamp = on
注:
配置
/var/lib/pgsql/data/pg_hba.conf以确保将客户机验证设置为允许从 Oracle GoldenGate 主机进行连接。例如,添加以下内容:#Allow connections from remote hosts host all all 0.0.0.0/0 md5有关更多信息,请参见 The pg_hba.conf File 。
- 重新启动 PostgreSQL 服务器:
sudo systemctl restart postgresql.service- 如果使用 Oracle Cloud Compute 托管 PostgreSQL,请打开端口 5432:
sudo firewall-cmd --permanent --add-port=5432/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all -
-
在 VCN 的安全列表中打开端口 5432。
-
> sudo su - postgres > psql注:或者,如果上述示例不起作用,则可以输入
sudo su - postgres psql。 -
设置 PostgreSQL。
-
下载并运行 seedSRCOCIGGLL_PostgreSQL.sql 以设置数据库并加载示例数据。
-
运行以下命令以设置用户(确保将
<password>替换为实际密码):
create user ggadmin with password '<password>'; alter user ggadmin with SUPERUSER; GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin; -
-
环境设置:MySQL
-
打开 Port 3306 ,OCI GoldenGate 可以通过该端口进行连接。
-
在 Oracle Cloud 控制台中,找到 HeatWave 数据库使用的子网。
-
在子网的安全列表中,为端口 TCP/3306 创建入站规则。
-
-
使用以下脚本创建
ggadmin用户。请记住将<ggadmin-password>替换为有效的口令:CREATE USER 'ggadmin' IDENTIFIED BY '<ggadmin-password>'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT, CREATE,CREATE VIEW, EVENT, INSERT, UPDATE, DROP,EXECUTE, DELETE ON *.* TO 'ggadmin'; -
使用示例方案创建目标表。
确保已成功创建表和用户。
任务 1:创建 OCI GoldenGate 资源
此快速入门示例需要源和目标的部署和连接。
-
为源 PostgreSQL 数据库创建部署。
-
为目标 HeatWave 数据库创建 MySQL 部署。
-
-
对于类型,从下拉列表中选择 PostgreSQL Server 。
-
对于数据库名称,输入
ociggll。 -
对于主机,输入运行 PostgreSQL 的计算实例的公共 IP。
-
对于端口,输入
5432。 -
对于用户名,输入
ggadmin。 -
对于 Password ,输入您的口令。
-
对于 Security Protocol(安全协议),从下拉列表中选择 Plain(普通)。
-
-
(可选)如果您的 HeatWave 数据库没有公共端点,则创建与 GoldenGate 的连接,然后将此连接分配给源 PostgreSQL 部署。
任务 2:启用补充日志记录
要启用补充日志记录,请执行以下操作:
-
启动 PostgreSQL GoldenGate 部署控制台:
-
从“Deployments(部署)”页面中,选择 PostgreSQL 部署以查看其详细信息。
-
在 PostgreSQL 部署详细信息页上,选择启动控制台。
-
在部署控制台登录页面上,输入任务 1 步骤 1 中提供的 GoldenGate 管理身份证明。
注:如果在创建部署时未选择 IAM 作为身份证明存储,则需要登录。
-
-
在部署控制台中,在左侧导航中选择 DB Connections(DB 连接),然后选择源 PostgreSQL 数据库,然后选择 Trandata 。
-
在“TRANDATA”页的“TRANDATA 信息”旁边,选择添加 TRANDATA (加号图标)。
-
在 "Trandata" 面板中,对于方案名称,输入
src_ociggll,然后选择提交。注:使用搜索字段搜索
src_ociggll并验证是否已添加表。
任务 3:创建提取
-
添加更改数据捕获提取:
-
在左侧导航中,选择提取,
-
在“提取”页上,选择添加提取(加号图标),然后按如下方式填写字段:
-
在“提取信息”页面上:
-
对于提取类型,选择更改数据捕获提取。
-
对于流程名称,输入提取的名称,例如
ECDC。 -
选择 Next 。
-
-
在“提取选项”页面上:
-
对于源身份证明,请从域下拉列表中选择 Oracle GoldenGate
-
从 Alias(别名)下拉列表中选择源 PostgreSQL 数据库。
-
对于“提取线索名称”,输入两个字符的线索名称,例如
C1。 -
选择 Next 。
-
-
在“提取参数”页上,将
MAP *.*, TARGET *.*;替换为以下内容:TABLE SRC_OCIGGLL.*;
-
-
选择创建并运行。
-
-
添加初始加载提取:
-
在“提取”页上,选择添加提取,然后按如下方式填写“添加提取”表单:
-
在“提取信息”页面上:
-
对于“提取”类型,选择初始加载提取。
-
对于进程名称,输入名称,如
EIL。 -
选择 Next 。
-
-
在“提取选项”页面上:
-
对于源身份证明,请从域下拉列表中选择 Oracle GoldenGate 。
-
从 Alias(别名)下拉列表中选择 PostgreSQL 数据库。
-
对于提取线索名称,输入两个字符的线索名称,例如
I1。 -
选择 Next 。
-
-
在“提取参数”页上,将文本区域的内容替换为以下内容:
EXTRACT EIL USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate EXTFILE I1, PURGE TABLE src_ociggll.*;注:在继续操作之前,请确保删除
USERIDALIAS前面的SOURCEDB参数。
-
-
选择创建并运行。
-
返回到“提取”页面,在此页面可以看到“提取”开始。
任务 4:创建初始加载提取的分配路径
要为初始加载提取创建分配路径,请完成以下操作:
-
在 Oracle Cloud 控制台的“部署”页上,选择目标 MySQL 部署。
-
在部署详细信息页上,选择启动控制台,然后以管理员用户身份登录。
-
如果使用 IAM 身份证明存储,请继续执行 "Create a Distribution Path"(创建分发路径)步骤。如果使用 GoldenGate 身份证明存储,则创建源 GoldenGate 用于连接到目标 GoldenGate 的用户。
-
在导航菜单中,选择 User Administration 。
-
选择添加新用户(加号图标),按如下所示填写字段,然后选择提交:
-
对于用户名,输入
ggsnet。 -
对于角色,选择运算符。
-
输入两次口令进行验证。
-
-
-
在 source PostgreSQL 部署控制台中,为上一步中创建的用户创建路径连接。
-
在导航菜单中,选择路径连接。
-
选择添加路径连接(加号图标),按如下所示填写字段,然后选择提交:
-
对于身份证明别名,请输入
dpuser。 -
对于用户 ID,输入
ggsnet -
对于“Password(密码)”,输入上一步中使用的相同密码。
-
-
-
创建分配路径。
-
在服务菜单栏中,选择路径,然后选择添加分发路径(加号图标)。
-
按如下方式完成“Add Path(添加路径)”表单:
-
在“路径信息”页面上:
-
对于 Path Name(路径名),输入此路径的名称。
-
选择 Next 。
-
-
在“来源选项”页面上:
-
对于源提取,留空。
-
对于线索名称,输入“初始装入提取”线索名称 (
I1)。 -
选择 Next 。
-
-
在“目标选项”页面上:
-
对于目标,选择 wss 。
-
对于目标主机,输入目标部署 URL,不带 https:// 或任何尾随斜杠。
-
在端口号中,输入
443。 -
对于线索名称,输入
I1。 -
对于目标验证方法,选择用户 ID 别名。
-
对于域,输入在上一步中创建的域名。
-
对于 Alias ,输入在上一步 (
dpuser) 中创建的别名。 -
选择 Next 。
-
-
-
选择创建并运行。
返回到“分配服务”页面,您可以在该页面中查看创建的路径。
-
-
在 target 部署控制台中,查看通过分发路径创建的接收器路径:
-
选择路径。
-
查看路径详细信息。
-
任务 5:为初始装入添加复制
-
在 target MySQL 部署控制台中,添加检查点表。
-
在导航菜单中,依次选择 DB Connections 、 target HeatWave Database 和 Checkpoints 。
-
选择添加检查点(加号图标)。
-
在 "Checkpoint"(检查点)窗格的 Schema Table(方案表)中,输入
SRCMIRROR_OCIGGLL.CHECKTABLE。 -
选择提交。
-
-
添加初始装入复制。
-
在导航菜单中,选择 Replicats ,然后选择 Add Replicat (加号图标)。
-
在 "Replicats"(复制)页面上,完成 "Add Replicat"(添加复制)字段,如下所示:
-
在“复制信息”页上:
-
对于 Replicat type(复制类型),选择 Parallel(并行)或 Coordinated(协调)。
-
对于进程名称,输入名称,如
RIL。 -
选择 Next 。
-
-
在“复制选项”页面上:
-
对于复制线索名称,输入任务 2 (
I1) 中的线索名称。 -
对于目标身份证明,为 HeatWave 数据库连接选择域和别名。
-
对于检查点表,选择在步骤 1 中创建的检查点表。
-
选择 Next 。
-
-
在“参数文件”页上,添加以下映射:
MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
-
-
选择创建并运行。
返回到 "Replicats"(复制)页面,您可以在该页面中查看复制详细信息。
-
-
验证初始加载:
-
在 Cloud Shell 中,连接到 HeatWave 实例使用的 VCN 和子网。
-
连接后,运行以下命令:
mysqlsh <user>@<MySQL DB Private IP>:3306 --sql -
运行以下脚本以验证数据:
select * from SRCMIRROR_OCIGGLL.SRC_CITY; select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
输出应返回由于初始加载而加载到目标数据库表中的数据。
-
任务 6:创建用于更改数据捕获的分配路径
-
在 source PostgreSQL 部署控制台中,选择 Distribution Service 。
-
选择添加分发路径。
-
按如下方式完成“Add Path(添加路径)”表单:
-
在“路径信息”页面上:
-
在路径名中,输入名称。
-
选择 Next 。
-
-
在“来源选项”页面上:
-
对于源提取,选择更改数据捕获提取 (
ECDC)。 -
对于线索名称,选择更改数据捕获线索文件 (
C1)。 -
选择 Next 。
-
-
在“目标选项”页面上:
-
对于目标,选择 wss 。
-
对于目标主机,输入目标部署控制台 URL(您可以在部署详细信息页上找到此 URL,不带 https:// 或任何尾随斜杠)。
-
在端口号中,输入
443。 -
对于线索名称,输入
C1。 -
对于目标验证方法,选择用户 ID 别名。
-
对于域,输入域名。
-
对于 Alias ,输入别名。
-
-
选择创建路径并运行。
-
-
在 target MySQL 部署控制台中,选择 Receiver Service ,然后查看创建的接收器路径。
任务 7:添加用于更改数据捕获的复制
对源 PostgreSQL 数据库执行更新以验证复制到目标 HeatWave 数据库。
-
添加复制:
-
在 target(目标)部署控制台中,选择 Administration Service(管理服务),然后在导航菜单中选择 Replicats(副本)。
-
在 Replicats(复制)页面上,选择 Add Replicat(添加复制)(加号图标),然后按如下方式填写 "Add Replicat"(添加复制)表单:
- 在“复制信息”页上:
-
对于复制类型,选择未集成的复制。
-
对于进程名称,输入名称,如
RCDC。 -
选择 Next 。
-
- 在“复制选项”页面上:
-
对于复制线索名称,输入任务 3 (
C1) 中的线索名称。 -
对于目标身份证明,选择 HeatWave 连接的域和别名。
-
对于 Checkpoint Table ,选择 Checkpoint 表。
-
- 在“复制信息”页上:
-
在“复制参数”页上,将
MAP *.*, TARGET *.*;替换为以下映射:MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*; -
选择创建并运行。
返回到 "Replicats"(复制)页面,您可以在该页面中查看复制详细信息。
-
-
验证更改数据捕获:
-
对源 PostgreSQL 数据库执行更新以验证复制到目标 HeatWave 数据库。运行以下脚本以对 PostgreSQL 数据库执行插入:
Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581); Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002); -
在 source PostgreSQL 部署控制台中,选择“更改数据捕获提取”名称 (
ECDC),选择详细信息,然后选择统计信息。验证src_ociggll.src_city是否具有 10 个插入。注:如果提取未捕获任何插入,则重新启动
ECDC提取。 -
在 target MySQL 部署中,选择
RCDCReplicat,查看其详细信息和统计信息以验证插入数。
-