将数据从 PostgreSQL 复制到 Google BigQuery

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

开始之前

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

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

任务 1:创建 OCI GoldenGate 资源

  1. 为源 PostgreSQL 数据库创建部署
  2. 为目标 Google BigQuery 创建大数据部署
  3. 创建与目标 Google BigQuery 的连接。
  4. 创建与源 PostgreSQL 数据库的连接。
    1. 对于类型,请确保选择 PostgreSQL 服务器。
    2. 对于数据库名称,输入 ociggll
    3. 对于主机,输入运行 PostgreSQL 的计算实例的公共 IP。
    4. 对于端口,输入 5432
    5. 有关用户名,请输入 ggadmin
    6. 对于密码,输入密码。
    7. 对于安全协议,选择普通
  5. 创建与 GoldenGate 的连接,然后将此连接分配给源 PostgreSQL 部署
  6. 将源连接分配给源 PostgreSQL 部署。
  7. 将目标连接分配给目标大数据部署

任务 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:创建 Extract

要添加 Change Data Capture Extract,请执行以下操作:
  1. 在左侧导航中,单击提取
  2. 提取页上,单击添加提取(加号图标),然后按如下方式填写字段:
    • 在“提取信息”页面上:
      1. 对于提取类型,选择 Change Data Capture Extract
      2. 对于进程名,输入提取的名称,例如 ECDC
      3. 单击下一步
    • 提取选项页上:
      1. 对于源凭证,从下拉列表中选择 Oracle GoldenGate
      2. 别名下拉列表中选择源 PostgreSQL 数据库。
      3. 对于提取线索名称,输入两个字符的线索名称,例如 C1
      4. 单击下一步
    • 提取参数页上,将 MAP *.*, TARGET *.*; 替换为以下内容:
      TABLE SRC_OCIGGLL.*;
  3. 单击创建并运行

    您将返回到 Extracts 页面,您可以在其中观察 Extracts 开始。

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

要为 Change Data Capture 创建 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
  6. 按以下操作完成“添加路径”表单:
    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. 单击创建路径并运行
  7. 目标大数据部署控制台中,单击 Receiver Service ,然后查看创建的 Receiver Path

任务 5:添加 Replicat

  1. 目标大数据部署控制台导航菜单中,单击 Replicats ,然后单击添加 Replicat (加号图标)。
  2. Replicats 页面上,单击添加 Replicat (加号图标),然后按如下方式完成添加 Replicat 表单:
    1. 在“Replicat 信息”页上:
      1. 对于 Replicat 类型,选择 ParallelCoordinated Replicat
      2. 对于进程名,输入名称,例如 RCDC
      3. 单击下一步
    2. 在“Replicat 选项”页上:
      1. 对于 Replicat 线索名称,输入任务 3 中的线索名称 (C1)。
      2. 对于目标身份证明,为 Google Big Query 连接选择别名
      3. 对于可用暂存位置,从下拉列表中选择 Google Cloud Storage。
      4. 对于通过暂存别名,从下拉列表中选择 Google Cloud Storage 连接。
    3. 在“参数文件”页上,添加以下映射,然后单击“下一步”:
      MAP *.*, TARGET *.*;
    4. 在“属性文件”页上,根据需要配置所需属性。查找标记为 #TODO 的项,然后单击下一步
      要考虑修改的一些属性包括:
      • gg.eventhandler.gcs.bucketMappingTemplate:提供将用作暂存存储的存储桶的名称
  3. 单击创建并运行

    您可以返回到 Replicats 页面,在其中可以查看 Replicat 详细信息。

任务 6:验证 Change Data Capture

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

    注意:

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