使用流处理处理程序将数据从 PostgresSQL 复制到 Snowflake

了解如何使用 OCI GoldenGate 使用流处理处理程序将数据从 PostgreSQL 复制到 Snowflake。

开始之前

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

使用 PostgreSQL 设置 OCI 数据库

  1. 创建 OCI Database with PostgreSQL 。

    1. 在 OCI Database with PostgreSQL 中:

      1. 选择 Configurations 。

      2. 使用现有配置,例如 PostgreSQL.VM.Standard.E5.Flex-14-0_51。

      3. 选择 Copy configuration(复制配置),重命名它,在用户变量(读/写)下添加 wal_level,然后将其设置为 'logical'。

      4. 选择创建。

      5. 有关更多信息,请参见 Copying a Configuration 。

    2. 创建数据库系统时,使用 wal_level 设置为 true 的配置。有关更多信息,请参见 Creating a Database System 。

  2. 使用 PostgreSQL 连接到 OCI Database。有关详细信息,请参阅连接到数据库。

  3. 使用 PostgreSQL 在 OCI Database 中为 GoldenGate 创建数据库和用户:

    1. Database

      1. 创建数据库 ociggll;

      2. \c ociggll;

      3. 创建方案 src_ociggll;

      4. 加载示例脚本

    2. User

      1. 使用口令 <password> 创建用户 ggadmin;

      2. 向 ggadmin 授予 DATABASE ociggll 上的所有权限;

      3. GRANT SELECT ON ALL TABLE IN SCHEMA src_ociggll TO ggadmin;

设置 Snowflake 数据库

  1. 创建 Snowflake 数据库。

  2. 用户必须创建公钥和私钥对才能在 Snowflake 中进行验证。

  3. 在 Snowflake 中为 GoldenGate 创建专门的用户,并具有适当的权限。

  4. 将公钥添加到 Snowflake 用户,例如:ALTER USER example_user SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';

  5. 使用示例方案创建目标表。

任务 1:创建 OCI GoldenGate 资源

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

  1. 需要 GoldenGate for PostgreSQL 26ai。

  2. 为源 PostgreSQL 数据库创建 PostgreSQL 部署。

  3. 为目标 Snowflake 数据库创建大数据部署。

  4. 创建具有以下值的 PostgreSQL 连接:

    1. 对于类型,从下拉列表中选择 OCI Database with PostgreSQL 。

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

    3. 对于用户名,输入 ggadmin。

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

    5. 对于 Security Protocol ,从下拉列表中选择 TLS ,然后选择 Prefer 。

  5. 创建具有以下值的 Snowflake 连接:

    1. 对于连接 URL ,输入 jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL。

      注:请确保将 <account_identifier> 和 <warehouse name> 替换为相应的值。

    2. 对于 Authentication Type(验证类型),从下拉列表中选择 Key pair authentication(密钥对验证)。

      注:对于 Snowflake Streaming,密钥对验证是唯一支持的验证类型。

    3. 在用户名中,输入名称。

    4. 上载之前创建的私钥。

    5. 在 "Private key password"(私有密钥密码)字段中输入私有密钥密码短语。

  6. 为目标大数据部署创建与 GoldenGate 的连接,然后将此连接分配给源 PostgreSQL 部署。

  7. 将源 PostgreSQL 连接分配给 PostgreSQL 部署。

  8. 将 Snowflake 连接分配给目标大数据部署。

任务 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 控制台的“部署”页上,选择目标大数据部署。

  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. 在目标大数据部署控制台中,添加初始加载复制。

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

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

      1. 在 "Replication Information" 页面上:

        1. 对于复制类型,选择协调复制。

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

        3. 选择 Next 。

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

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

        2. 对于目标,选择 "Snowflake"。

        3. 对于 Target Credentials(目标身份证明),选择 Snowflake 连接的域和别名。

        4. 对于可用别名,从下拉列表中选择一个别名,例如 Snowflake。

        5. 选择 Streaming 。

        6. 选择 Next 。

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

        INSERTALLRECORDS
        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      4. 在“属性”页上,查看属性并添加 jvm.bootoptions= -Djdk.lang.processReaperUseDefaultStackSize=true。

      5. 选择创建并运行。

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

  2. 要验证初始加载,请连接到 Snowflake 数据库并运行以下查询:

    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. 选择创建路径并运行。

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

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

  1. 添加复制。

    1. 在目标大数据部署控制台中,选择管理服务,然后在导航菜单中,选择复制。

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

      • 在“复制信息”页上:
        1. 对于 Replicat type(复制类型),选择 Classic(经典)或 Coordinated(协调)。

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

        3. 选择 Next 。

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

        2. 对于目标,选择 "Snowflake"。

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

        4. 选择 Streaming 。

      • 在“参数文件”页上,添加以下映射,然后选择下一步:

        INSERTALLRECORDS
        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      • 在“属性”页上,查看属性,添加以下映射,然后选择创建并运行:

        jvm.bootoptions= -Djdk.lang.processReaperUseDefaultStackSize=true

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

  2. 验证更改数据捕获:

    1. 对源 PostgreSQL 数据库执行更新以验证复制到 Snowflake。运行以下脚本以对 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. 在源 PostgreSQL 部署控制台中,选择 RCDC,然后选择统计信息。验证 src_ociggll.src_city 是否具有 10 个插入。

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

    3. 在目标大数据部署控制台中,选择 RCDC,查看其详细信息和统计信息以验证插入数。

任务 8:监控和维护流程

  1. 监视复制过程。

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