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

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

开始之前

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

  • 访问 OCI Database with PostgreSQL
  • OCI Database with PostgreSQL 使用的 VCN 安全列表中的开放端口 5432
  • 访问 Snowflake

使用 PostgreSQL 设置 OCI 数据库

  1. 创建 OCI Database with PostgreSQL
    1. 在 OCI PostgreSQL 中:
      1. 单击配置
      2. 使用现有配置,例如 PostgreSQL.VM.Standard.E5.Flex-14-0_51
      3. 单击复制配置,重命名该配置,在用户变量(读/写)下添加 wal_level,然后将其设置为 'logical'。
      4. 单击创建
      5. 有关更多信息,请参见 Copying a Configuration
    2. 创建数据库系统时,使用 wal_level 设置为 true 的配置。有关详细信息,请参阅创建数据库系统
  2. 连接到 OCI PostgreSQL。有关详细信息,请参阅连接到数据库
  3. 在 OCI PostgreSQL 中为 GoldenGate 创建数据库和用户:
    1. 数据库
      1. 创建数据库 ociggll;
      2. \c ociggll;
      3. 创建方案 src_ociggll;
      4. 装入样例脚本 (seedSRCOCIGGLL_PostgreSQL.sql )
    2. 用户
      1. 使用密码 '<password>' 创建用户 ggadmin
      2. 将数据库 ociggll 上的所有权限授予 ggadmin;
      3. GRANT SELECT ON 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. PostgreSQL 23ai 需要 GoldenGate。
  2. 为源 PostgreSQL 数据库创建 PostgreSQL 部署
  3. 为目标 Snowflake 数据库创建大数据部署
  4. 使用以下值创建 PostgreSQL 连接
    1. 对于类型,从下拉列表中选择 OCI PostgreSQL
    2. 对于数据库名称,输入 ociggll
    3. 对于用户名,输入 ggadmin
    4. 对于口令,请输入口令。
    5. 对于安全协议,从下拉列表中选择 TLS ,然后选择首选项
  5. 使用以下值创建 Snowflake 连接
    1. 对于连接 URL ,输入 jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL

      注意:

      确保将 <account_identifier><warehouse name> 替换为相应的值。
    2. 对于验证类型,从下拉列表中选择密钥对验证

      注意:

      密钥对验证是 Snowflake 流处理的唯一支持的验证类型。
    3. 对于用户名,请输入名称。
    4. 上传您之前创建的私钥
    5. 在 "Private key password"(私有密钥密码)字段中输入私有密钥密码短语。
  6. 为目标大数据部署创建到 GoldenGate 的连接,然后将此连接分配给源 PostgreSQL 部署
  7. 将源 PostgreSQL 连接分配给 PostgreSQL 部署
  8. Snowflake 连接分配给目标大数据部署

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

要启用补充事件记录,请执行以下操作:
  1. 启动 PostgreSQL GoldenGate 部署控制台:
    1. 在“部署”页中,选择 PostgreSQL 部署以查看其详细信息。
    2. 在 PostgreSQL 部署详细信息页上,单击启动控制台
    3. 在部署控制台登录页上,输入在任务 1 的步骤 1 中提供的 GoldenGate 管理身份证明。

      注意:

      如果创建部署时未选择 IAM 作为身份证明存储,则需要登录。
  2. 在 GoldenGate 23ai 中,依次单击左侧导航中的数据库连接、源 PostgreSQL 数据库和 Trandata
  3. 在“TRANDATA”页面上,单击“TRANDATA 信息”旁边的添加 TRANDATA (加号图标)。
  4. 在 Trandata 面板中,为方案名称输入 src_ociggll.*,然后单击提交

    注意:

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

任务 3:创建提取

  1. 添加 Change Data Capture Extract
    1. 在左侧导航中,单击 Extracts(提取)
    2. 提取页上,单击添加提取(加号图标),然后按如下方式填写字段:
      • 在“提取信息”页面上:
        1. 对于提取类型,选择更改数据捕获提取
        2. 对于进程名称,输入提取的名称,例如 ECDC
        3. 单击下一步
      • 提取选项页上:
        1. 对于源凭证,从下拉列表中选择 Oracle GoldenGate
        2. 别名下拉列表中选择源 PostgreSQL 数据库。
        3. 对于提取线索名称,输入两个字符的线索名称,例如 C1
        4. 依次单击注册下一步
      • 提取参数页上,添加:
        TABLE src_ociggll.*;
    3. 单击创建并运行
  2. 添加初始加载提取
    1. 在“提取”页上,单击添加提取,然后按如下方式完成“添加提取”表单:
      • 提取信息页上:
        1. 对于 Extract(提取)类型,选择 Initial Load(初始加载) Extract(提取)
        2. 对于进程名称,输入名称,例如 EIL
        3. 单击下一步
      • 提取选项页上:
        1. 对于 "Source"(源)凭证,从 Domain(域)下拉列表中选择 Oracle GoldenGate
        2. 别名下拉列表中选择 PostgreSQL 数据库。
        3. 对于提取线索名称,输入两个字符的线索名称,例如 I1
        4. 单击下一步
      • 提取参数页上,将 TABLE *.* 替换为以下内容:
        TABLE src_ociggll.*;
    2. 单击创建并运行
您可以返回到提取页,在该页中可以观察提取的开始。

任务 4:为 Initial Load Extract 创建 Distribution Path

要为 Initial Load Extract 创建 Distribution Path,请执行以下操作:
  1. 在 Oracle Cloud 控制台的“部署”页上,选择目标大数据部署。
  2. 在部署详细信息页面上,单击启动控制台。使用在任务 1 的步骤 2 中创建的管理员用户详细信息登录。
  3. 如果使用 IAM 身份证明存储,请继续执行“创建 Distribution Path”步骤。如果使用 GoldenGate 身份证明存储,则创建源 GoldenGate 用于连接到目标 GoldenGate 的用户。
    1. 在导航菜单中,单击用户管理
    2. 单击添加新用户(加号图标),按如下方式填写字段,然后单击提交
      • 对于用户名,输入 ggsnet
      • 对于角色,选择运算符
      • 输入两次口令进行验证。
  4. PostgreSQL 部署控制台中,为在上一步中创建的用户创建路径连接。
    1. 在导航菜单中,单击路径连接
    2. 单击添加路径连接(加号图标),按如下方式填写字段,然后单击提交
      • 对于身份证明别名,输入 dpuser
      • 对于用户 ID,输入 ggsnet
      • 对于“密码”,输入上一步中使用的相同密码。
  5. 创建 Distribution Path
    1. 在服务菜单栏中,单击 Distribution Service ,然后单击添加 Distribution Path (加号图标)。
    2. 按如下所示完成“Add Path(添加路径)”表单:
      • 在“路径信息”页上:
        1. 对于路径名,输入此路径的名称。
        2. 单击下一步
      • 在“来源选项”页面上:
        1. 对于Extract ,留空。
        2. 对于线索名称,输入 Initial Load Extract 线索名称 (I1)。
        3. 单击下一步
      • 在“目标选项”页面上:
        1. 对于 Target Protocol ,选择 wss
        2. 对于目标主机,输入不带 https:// 或任何尾随斜杠的目标部署 URL。
        3. 对于端口号,请输入 443
        4. 对于线索名称,输入 I1
        5. 对于目标验证方法,选择 OAuth

          注意:

          如果创建部署时选择了 GoldenGate 作为身份证明存储,请选择 UserID 别名。否则,请选择 OAuth
        6. 对于,输入在上一步中创建的域名。
        7. 对于别名,输入在上一步 (dpuser) 中创建的别名。
        8. 单击下一步
    3. 单击创建并运行
    您可以返回到 Distribution Service 页面,在其中可以查看创建的路径。
  6. 目标大数据部署控制台中,查看因 Distribution path 创建的 Receiver Path
    1. 单击 Receiver Service
    2. 查看 Receiver Path 详细信息。

任务 5:添加 Initial LoadReplicat

  1. 目标大数据部署控制台中,添加 Initial Load Replicat
    1. 在导航菜单中,依次单击复制添加复制(加号图标)。
    2. Replicats 页面上,然后按如下方式填写“添加 Replicat”字段:
      1. 在 "Replication Information" 页面上:
        1. 对于 Replicat 类型,选择 Coordinated Replicat
        2. 对于进程名称,输入名称,例如 RIL
        3. 单击下一步
      2. 在“Replicat Options(复制选项)”页面上:
        1. 对于复制线索名称,输入任务 2 中的线索名称 (I1)。
        2. 对于目标,选择 Snowflake。
        3. 对于目标身份证明,选择 Snowflake 连接的别名
        4. 对于可用别名,请从下拉列表中选择一个别名,例如 Snowflake。
        5. 选择流处理
        6. 单击下一步
      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 页面,在其中可以查看 Replicat 详细信息。

  2. 要验证 Initial Load,请连接到 Snowflake 数据库并运行以下查询:
    select * from SRCMIRROR_OCIGGLL.SRC_CITY;
    select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;

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

任务 6:为 Change Data Capture 创建 Distribution Path

要为 Change Data Capture 创建 Distribution Path,请执行以下操作:
  1. PostgreSQL 部署控制台中,单击分发服务
  2. 单击添加 Distribution Path
  3. 按如下所示完成“Add Path(添加路径)”表单:
    1. 在“路径信息”页上:
      1. 对于路径名,输入名称。
      2. 单击下一步
    2. 在“来源选项”页面上:
      1. 对于Extract ,选择 Change Data Capture Extract (ECDC))。
      2. 对于线索名称,选择 Change Data Capture 线索文件 (C1)。
      3. 单击下一步
    3. 在“目标选项”页面上:
      1. 对于目标,选择 wss
      2. 对于目标主机,输入目标部署控制台 URL(您可以在部署详细信息页上找到此 URL,不带 https:// 或任何尾随斜杠)。
      3. 对于端口号,请输入 443
      4. 对于线索名称,输入 C1
      5. 对于目标验证方法,选择 OAuth

        注意:

        如果创建部署时选择了 GoldenGate 作为身份证明存储,请选择 UserID 别名。否则,请选择 OAuth
      6. 对于,输入域名。
      7. 对于别名,输入别名。
    4. 单击创建路径并运行
  4. 在目标大数据部署控制台中,单击 Receiver Service ,然后查看创建的 Receiver path

任务 7:为 Change Data Capture 添加 Replicat

对源 PostgreSQL 数据库执行更新以验证复制到 Snowflake
  1. 添加 Replicat
    1. 在目标大数据部署控制台中,单击 Administration Service ,然后在导航菜单中,单击 Replicats
    2. Replicats 页面上,单击添加 Replicat (加号图标),然后按如下方式完成添加 Replicat 表单:
      • 在“Replicat Information(复制信息)”页面上:
        1. 对于 Replicat 类型,选择 ClassicCoordinated
        2. 对于进程名称,输入名称,例如 RCDC
        3. 单击下一步
      • 在“Replicat 选项”页面上:
        1. 对于 Replicat 线索名称,输入任务 3 中的线索名称 (C1)。
        2. 对于目标,选择 Snowflake。
        3. 对于目标身份证明,为 Snowflake 连接选择域和别名。
        4. 选择流处理
      • 在“参数文件”页上,添加以下映射,然后单击下一步
        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 页面,在其中可以查看 Replicat 详细信息。

  2. 验证 Change Data Capture
    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 个插入。

      注意:

      如果 Extract 未捕获任何插入,则重新启动 ECDC Extract
    3. 在目标大数据部署控制台中,选择 RCDC,查看其详细信息统计信息以验证插入数。

任务 8:监控和维护流程

  1. 监视性能
  2. 管理线索文件