将数据从 PostgreSQL 复制到 Snowflake

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

开始之前

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

环境设置: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;

环境设置:雪花

  1. 在 Snowflake 中创建 GoldenGate 用户,并具有适当的权限。

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

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

任务 1:创建 OCI GoldenGate 资源

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

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

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

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

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

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

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

    4. 对于端口,输入 5432。

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

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

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

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

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

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

    2. 对于 Authentication Type(验证类型),从下拉列表中选择 Basic authentication(基本验证)。

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

    4. 对于 Password(密码),输入密码。

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

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

  7. 将 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. 对于 Replicat type(复制类型),选择 Classic(经典)或 Coordinated(协调)。

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

        3. 选择 Next 。

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

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

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

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

        4. (可选)启用外部存储以从下拉列表中选择可用的暂存位置。

        5. 选择 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. 在“属性”页上,查看属性,然后选择创建并运行。

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

  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. (可选)启用外部存储以从下拉列表中选择可用的暂存位置。

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

        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"(复制)页面,您可以在该页面中查看复制详细信息。

  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);
  3. 在源 PostgreSQL 部署控制台中,选择 RCDC,然后选择统计信息。验证 src_ociggll.src_city 是否具有 10 个插入。

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

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

任务 8:监控和维护流程

  1. 监视复制过程。

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