将数据从 PostgreSQL 复制到 Snowflake

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

开始之前

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

环境设置:PostgreSQL

要为此快速入门设置环境,请执行以下操作:
  1. 运行以下命令以 install 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
    4. 重新启动 PostgreSQL 服务器:
      sudo systemctl restart postgresql.service
  3. 如果使用 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;

环境设置:Snowflake

  1. Create a GoldenGate user in Snowflake with appropriate privileges.
  2. 使用示例方案创建目标表。

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

任务 1:创建 OCI GoldenGate 资源

此快速入门示例需要源和目标的部署和连接。
  1. 为源 PostgreSQL 数据库创建部署
  2. 为目标 Snowflake 数据库创建大数据部署
  3. 使用以下值创建 PostgreSQL 连接
    1. 对于类型,从下拉列表中选择 PostgreSQL 服务器
    2. 对于数据库名称,输入 ociggll
    3. 对于主机,输入运行 PostgreSQL 的计算实例的公共 IP。
    4. 对于端口,输入 5432
    5. 有关用户名,请输入 ggadmin
    6. 口令中,输入口令。
    7. 对于安全协议,从下拉列表中选择
  4. 使用以下值创建 Snowflake 连接
    1. 对于连接 URL,输入 jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL

      注意:

      确保将 <account_identifier><warehouse name> 替换为相应的值。
    2. 对于验证类型,从下拉列表中选择基本验证
    3. 对于用户名,请输入名称。
    4. 对于密码,输入密码。
  5. (可选)如果您的大数据部署没有公共端点,则创建与 GoldenGate 的连接,然后将此连接分配给源 PostgreSQL 部署
  6. 将源 PostgreSQL 连接分配给 PostgreSQL 部署
  7. Snowflake 连接分配给目标大数据部署

任务 2:启用补充事件记录

要启用补充日志记录,请执行以下操作:
  1. 启动 PostgreSQL GoldenGate 部署控制台:
    1. 在“部署”页中,选择 PostgreSQL 部署以查看其详细信息。
    2. 在 PostgreSQL 部署详细信息页上,单击启动控制台
    3. 在部署控制台登录页上,输入在任务 1 的步骤 1 中提供的 GoldenGate 管理身份证明。
  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. 单击下一步
      • 提取参数页上,将 MAP *.*, TARGET *.*; 替换为以下内容:
        TABLE SRC_OCIGGLL.*;
    3. 单击创建并运行
  2. 添加初始加载提取
    1. 在“提取”页上,单击添加提取,然后按如下方式完成“添加提取”表单:
      • 提取信息页上:
        1. 对于提取类型,选择初始加载提取
        2. 对于进程名,输入名称,例如 EIL
        3. 单击下一步
      • 提取选项页上:
        1. 对于 "Source"(源)凭证,从 Domain(域)下拉列表中选择 Oracle GoldenGate
        2. 别名下拉列表中选择 PostgreSQL 数据库。
        3. 对于提取线索名称,输入两个字符的线索名称,例如 I1
        4. 单击下一步
      • 提取参数页上,将文本区域的内容替换为以下内容:
        EXTRACT EIL
        USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate
        EXTFILE I1, PURGE
        TABLE src_ociggll.*;

        注意:

        在继续操作之前,请确保删除 USERIDALIAS 前面的 SOURCEDB 参数。
    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. 按以下操作完成“添加路径”表单:
      • 在“路径信息”页上:
        1. 对于路径名,输入此路径的名称。
        2. 单击下一步
      • 在“来源选项”页面上:
        1. 对于Extract ,留空。
        2. 对于线索名称,输入 Initial Load Extract 线索名称 (I1)。
        3. 单击下一步
      • 在“目标选项”页面上:
        1. 对于 Target(目标),选择 wss
        2. 对于目标主机,输入不带 https:// 或任何尾随斜杠的目标部署 URL。
        3. 对于端口号,输入 443
        4. 线索名称中,输入 I1
        5. 对于目标验证方法,选择 UserID 别名
        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 类型,选择经典协调
        2. 对于进程名,输入名称,例如 RIL
        3. 单击下一步
      2. 在“Replicat Options(复制选项)”页面上:
        1. 对于复制线索名称,输入任务 2 中的线索名称 (I1)。
        2. 对于目标身份证明,选择 Snowflake 连接的别名
        3. 对于可用别名,请从下拉列表中选择一个别名,例如 Snowflake。
        4. (可选)启用外部存储以从下拉列表中选择可用的暂存位置。
        5. 单击下一步
      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. 在“属性”页上,查看属性,然后单击创建并运行

    您可以返回到 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. 按以下操作完成“添加路径”表单:
    1. 在“路径信息”页上:
      1. 对于路径名,输入名称。
      2. 单击下一步
    2. 在“来源选项”页面上:
      1. 对于Extract ,选择 Change Data Capture Extract (ECDC))。
      2. 对于线索名称,选择 Change Data Capture 线索文件 (C1)。
      3. 单击下一步
    3. 在“目标选项”页面上:
      1. 对于 Target(目标),选择 wss
      2. 对于目标主机,输入目标部署控制台 URL(您可以在部署详细信息页上找到此 URL,不带 https:// 或任何尾随斜杠)。
      3. 对于端口号,输入 443
      4. 对于线索名称,输入 C1
      5. 对于目标验证方法,选择 UserID 别名
      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. (可选)启用外部存储以从下拉列表中选择可用的暂存位置。
      • 在“参数文件”页上,添加以下映射,然后单击下一步
        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;
      • 在“属性”页上,查看属性,然后单击创建并运行

    您可以返回到 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. 管理线索文件