将数据从 PostgreSQL 复制到 MySQL

了解如何使用 OCI GoldenGate 将数据从 PostgreSQL 复制到 MySQL。

开始之前

要成功完成此快速入门,您必须具有以下各项:

环境设置:PostgreSQL

要为此快速入门设置环境,请执行以下操作:

  1. 运行以下命令以安装 PostgreSQL

    1. 安装 PostgreSQL 服务器:

      sudo yum install postgresql-server
    2. 安装 postgresql-contrib 模块以避免此 SQL 异常错误

      sudo yum install postgresql-contrib
    3. 创建新的 PostgreSQL 数据库集群:

      sudo postgresql-setup --initdb
    4. 启用 postgresql.service:

      sudo systemctl enable postgresql.service
    5. 启动 postgresql.service:

      sudo systemctl start postgresql.service
  2. 默认情况下,PostgreSQL 仅允许本地连接。允许远程连接到 PostgreSQL

    1. /var/lib/pgsql/data/postgresql.conf 中,为复制准备数据库

    2. 找到并取消注释 listen_addresses = 'localhost' 并将 localhost 更改为星号 (`):

      listen_addresses = '*'
    3. 按如下方式设置以下参数:

      • 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

      1. 重新启动 PostgreSQL 服务器:
      sudo systemctl restart postgresql.service
      1. 如果使用 Oracle Cloud Compute 托管 PostgreSQL,请打开端口 5432:
      sudo firewall-cmd --permanent --add-port=5432/tcp
      sudo firewall-cmd --reload
      sudo firewall-cmd --list-all
    4. 在 VCN 的安全列表中打开端口 5432。

    5. 连接到 PostgreSQL

      > sudo su - postgres
      > psql

      注:或者,如果上述示例不起作用,则可以输入 sudo su - postgres psql

    6. 设置 PostgreSQL。

      1. 下载并运行 seedSRCOCIGGLL_PostgreSQL.sql 以设置数据库并加载示例数据。

      2. 运行以下命令以设置用户(确保将 <password> 替换为实际密码):

      create user ggadmin with password '<password>';
      alter user ggadmin with SUPERUSER;
      GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin;

环境设置:MySQL

  1. 打开 Port 3306 ,OCI GoldenGate 可以通过该端口进行连接。

    1. 在 Oracle Cloud 控制台中,找到 HeatWave 数据库使用的子网。

    2. 在子网的安全列表中,为端口 TCP/3306 创建入站规则。

  2. 使用以下脚本创建 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';
  3. 使用示例方案创建目标表。

    确保已成功创建表和用户。

任务 1:创建 OCI GoldenGate 资源

此快速入门示例需要源和目标的部署和连接。

  1. 为源 PostgreSQL 数据库创建部署

  2. 为目标 HeatWave 数据库创建 MySQL 部署

  3. 创建 PostgreSQL 连接

    1. 对于类型,从下拉列表中选择 PostgreSQL Server

    2. 对于数据库名称,输入 ociggll

    3. 对于主机,输入运行 PostgreSQL 的计算实例的公共 IP。

    4. 对于端口,输入 5432

    5. 对于用户名,输入 ggadmin

    6. 对于 Password ,输入您的口令。

    7. 对于 Security Protocol(安全协议),从下拉列表中选择 Plain(普通)

  4. 创建 HeatWave 连接

  5. (可选)如果您的 HeatWave 数据库没有公共端点,则创建与 GoldenGate 的连接,然后将此连接分配给源 PostgreSQL 部署

  6. 将源连接分配给源 PostgreSQL 部署

  7. 将目标连接分配给目标 MySQL 部署

任务 2:启用补充日志记录

要启用补充日志记录,请执行以下操作:

  1. 启动 PostgreSQL GoldenGate 部署控制台:

    1. 从“Deployments(部署)”页面中,选择 PostgreSQL 部署以查看其详细信息。

    2. 在 PostgreSQL 部署详细信息页上,选择启动控制台

    3. 在部署控制台登录页面上,输入任务 1 步骤 1 中提供的 GoldenGate 管理身份证明。

      注:如果在创建部署时未选择 IAM 作为身份证明存储,则需要登录。

  2. 在部署控制台中,在左侧导航中选择 DB Connections(DB 连接),然后选择源 PostgreSQL 数据库,然后选择 Trandata

  3. 在“TRANDATA”页的“TRANDATA 信息”旁边,选择添加 TRANDATA (加号图标)。

  4. 在 "Trandata" 面板中,对于方案名称,输入 src_ociggll,然后选择提交

    注:使用搜索字段搜索 src_ociggll 并验证是否已添加表。

任务 3:创建提取

  1. 添加更改数据捕获提取:

    1. 在左侧导航中,选择提取

    2. 在“提取”页上,选择添加提取(加号图标),然后按如下方式填写字段:

      • 在“提取信息”页面上:

        1. 对于提取类型,选择更改数据捕获提取

        2. 对于流程名称,输入提取的名称,例如 ECDC

        3. 选择 Next

      • 在“提取选项”页面上:

        1. 对于源身份证明,请从下拉列表中选择 Oracle GoldenGate

        2. Alias(别名)下拉列表中选择源 PostgreSQL 数据库。

        3. 对于“提取线索名称”,输入两个字符的线索名称,例如 C1

        4. 选择 Next

      • 在“提取参数”页上,将 MAP *.*, TARGET *.*; 替换为以下内容:

        TABLE SRC_OCIGGLL.*;
    3. 选择创建并运行

  2. 添加初始加载提取:

    1. 在“提取”页上,选择添加提取,然后按如下方式填写“添加提取”表单:

      • 在“提取信息”页面上:

        1. 对于“提取”类型,选择初始加载提取

        2. 对于进程名称,输入名称,如 EIL

        3. 选择 Next

      • 在“提取选项”页面上:

        1. 对于源身份证明,请从下拉列表中选择 Oracle GoldenGate

        2. Alias(别名)下拉列表中选择 PostgreSQL 数据库。

        3. 对于提取线索名称,输入两个字符的线索名称,例如 I1

        4. 选择 Next

      • 在“提取参数”页上,将文本区域的内容替换为以下内容:

        EXTRACT EIL
        USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate
        EXTFILE I1, PURGE
        TABLE src_ociggll.*;

        注:在继续操作之前,请确保删除 USERIDALIAS 前面的 SOURCEDB 参数。

    2. 选择创建并运行

返回到“提取”页面,在此页面可以看到“提取”开始。

任务 4:创建初始加载提取的分配路径

要为初始加载提取创建分配路径,请完成以下操作:

  1. 在 Oracle Cloud 控制台的“部署”页上,选择目标 MySQL 部署

  2. 在部署详细信息页上,选择启动控制台,然后以管理员用户身份登录。

  3. 如果使用 IAM 身份证明存储,请继续执行 "Create a Distribution Path"(创建分发路径)步骤。如果使用 GoldenGate 身份证明存储,则创建源 GoldenGate 用于连接到目标 GoldenGate 的用户。

    1. 在导航菜单中,选择 User Administration

    2. 选择添加新用户(加号图标),按如下所示填写字段,然后选择提交

      • 对于用户名,输入 ggsnet

      • 对于角色,选择运算符

      • 输入两次口令进行验证。

  4. source PostgreSQL 部署控制台中,为上一步中创建的用户创建路径连接。

    1. 在导航菜单中,选择路径连接

    2. 选择添加路径连接(加号图标),按如下所示填写字段,然后选择提交

      • 对于身份证明别名,请输入 dpuser

      • 对于用户 ID,输入 ggsnet

      • 对于“Password(密码)”,输入上一步中使用的相同密码。

  5. 创建分配路径。

    1. 在服务菜单栏中,选择路径,然后选择添加分发路径(加号图标)。

    2. 按如下方式完成“Add Path(添加路径)”表单:

      • 在“路径信息”页面上:

        1. 对于 Path Name(路径名),输入此路径的名称。

        2. 选择 Next

      • 在“来源选项”页面上:

        1. 对于源提取,留空。

        2. 对于线索名称,输入“初始装入提取”线索名称 (I1)。

        3. 选择 Next

      • 在“目标选项”页面上:

        1. 对于目标,选择 wss

        2. 对于目标主机,输入目标部署 URL,不带 https:// 或任何尾随斜杠。

        3. 端口号中,输入 443

        4. 对于线索名称,输入 I1

        5. 对于目标验证方法,选择用户 ID 别名

        6. 对于,输入在上一步中创建的域名。

        7. 对于 Alias ,输入在上一步 (dpuser) 中创建的别名。

        8. 选择 Next

    3. 选择创建并运行

    返回到“分配服务”页面,您可以在该页面中查看创建的路径。

  6. target 部署控制台中,查看通过分发路径创建的接收器路径:

    1. 选择路径

    2. 查看路径详细信息。

任务 5:为初始装入添加复制

  1. target MySQL 部署控制台中,添加检查点表。

    1. 在导航菜单中,依次选择 DB Connectionstarget HeatWave DatabaseCheckpoints

    2. 选择添加检查点(加号图标)。

    3. 在 "Checkpoint"(检查点)窗格的 Schema Table(方案表)中,输入 SRCMIRROR_OCIGGLL.CHECKTABLE

    4. 选择提交

  2. 添加初始装入复制。

    1. 在导航菜单中,选择 Replicats ,然后选择 Add Replicat (加号图标)。

    2. 在 "Replicats"(复制)页面上,完成 "Add Replicat"(添加复制)字段,如下所示:

      1. 在“复制信息”页上:

        1. 对于 Replicat type(复制类型),选择 Parallel(并行)Coordinated(协调)

        2. 对于进程名称,输入名称,如 RIL

        3. 选择 Next

      2. 在“复制选项”页面上:

        1. 对于复制线索名称,输入任务 2 (I1) 中的线索名称。

        2. 对于目标身份证明,为 HeatWave 数据库连接选择别名

        3. 对于检查点表,选择在步骤 1 中创建的检查点表。

        4. 选择 Next

      3. 在“参数文件”页上,添加以下映射:

        MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
    3. 选择创建并运行

    返回到 "Replicats"(复制)页面,您可以在该页面中查看复制详细信息。

  3. 验证初始加载:

    1. 在 Cloud Shell 中,连接到 HeatWave 实例使用的 VCN 和子网。

    2. 连接后,运行以下命令:

      mysqlsh <user>@<MySQL DB Private IP>:3306 --sql
    3. 运行以下脚本以验证数据:

      select * from SRCMIRROR_OCIGGLL.SRC_CITY;
      select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;

    输出应返回由于初始加载而加载到目标数据库表中的数据。

任务 6:创建用于更改数据捕获的分配路径

  1. source PostgreSQL 部署控制台中,选择 Distribution Service

  2. 选择添加分发路径

  3. 按如下方式完成“Add Path(添加路径)”表单:

    1. 在“路径信息”页面上:

      1. 路径名中,输入名称。

      2. 选择 Next

    2. 在“来源选项”页面上:

      1. 对于源提取,选择更改数据捕获提取 (ECDC)。

      2. 对于线索名称,选择更改数据捕获线索文件 (C1)。

      3. 选择 Next

    3. 在“目标选项”页面上:

      1. 对于目标,选择 wss

      2. 对于目标主机,输入目标部署控制台 URL(您可以在部署详细信息页上找到此 URL,不带 https:// 或任何尾随斜杠)。

      3. 端口号中,输入 443

      4. 对于线索名称,输入 C1

      5. 对于目标验证方法,选择用户 ID 别名

      6. 对于,输入域名。

      7. 对于 Alias ,输入别名。

    4. 选择创建路径并运行

  4. target MySQL 部署控制台中,选择 Receiver Service ,然后查看创建的接收器路径。

任务 7:添加用于更改数据捕获的复制

对源 PostgreSQL 数据库执行更新以验证复制到目标 HeatWave 数据库。

  1. 添加复制:

    1. target(目标)部署控制台中,选择 Administration Service(管理服务),然后在导航菜单中选择 Replicats(副本)

    2. Replicats(复制)页面上,选择 Add Replicat(添加复制)(加号图标),然后按如下方式填写 "Add Replicat"(添加复制)表单:

      • 在“复制信息”页上:
        1. 对于复制类型,选择未集成的复制

        2. 对于进程名称,输入名称,如 RCDC

        3. 选择 Next

      • 在“复制选项”页面上:
        1. 对于复制线索名称,输入任务 3 (C1) 中的线索名称。

        2. 对于目标身份证明,选择 HeatWave 连接的域和别名。

        3. 对于 Checkpoint Table ,选择 Checkpoint 表。

    3. 在“复制参数”页上,将 MAP *.*, TARGET *.*; 替换为以下映射:

      MAP src_ociggll.*, TARGET SRCMIRROR_OCIGGLL.*;
    4. 选择创建并运行

      返回到 "Replicats"(复制)页面,您可以在该页面中查看复制详细信息。

  2. 验证更改数据捕获:

    1. 对源 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);
    2. source PostgreSQL 部署控制台中,选择“更改数据捕获提取”名称 (ECDC),选择详细信息,然后选择统计信息。验证 src_ociggll.src_city 是否具有 10 个插入。

      注:如果提取未捕获任何插入,则重新启动 ECDC 提取。

    3. target MySQL 部署中,选择 RCDC Replicat,查看其详细信息统计信息以验证插入数。

任务 8:监控和维护流程

  1. 监视复制过程

  2. Manage Trail files(管理线索文件)