将 PostgreSQL 中的数据复制到 Google BigQuery

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

开始之前

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

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

环境设置: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:创建 OCI GoldenGate 资源

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

  2. 为目标 Google BigQuery 创建大数据部署

  3. 创建与目标 Google BigQuery 的连接。

  4. 创建与源 PostgreSQL 数据库的连接。

    1. 对于类型,请确保选择 PostgreSQL Server。

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

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

    4. 对于端口,输入 5432

    5. 对于用户名,输入 ggadmin

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

    7. 对于 Security Protocol(安全协议),选择 Plain(普通)

  5. 创建与 GoldenGate 的连接,然后将此连接分配给源 PostgreSQL 部署

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

  7. 将目标连接分配给目标大数据部署

任务 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. 在左侧导航中,选择 Extracts

  2. 在“提取”页上,选择添加提取(加号图标),然后按如下方式填写字段:

    • 在“提取信息”页面上:

      1. 对于提取类型,选择更改数据捕获提取

      2. 对于流程名称,输入提取的名称,例如 ECDC

      3. 选择 Next

    • 在“提取选项”页面上:

      1. 对于源身份证明,请从下拉列表中选择 Oracle GoldenGate

      2. Alias(别名)下拉列表中选择源 PostgreSQL 数据库。

      3. 对于“提取线索名称”,输入两个字符的线索名称,例如 C1

      4. 选择 Next

    • 在“提取参数”页上,将 MAP *.*, TARGET *.*; 替换为以下内容:

      TABLE SRC_OCIGGLL.*;
  3. 选择创建并运行

您将返回到“提取”页面,在此页面可以看到“提取”开始。

任务 4:创建用于更改数据捕获的分配路径

要为更改数据捕获创建分发路径,请完成以下操作:

  1. 在 Oracle Cloud 控制台的“部署”页上,选择目标大数据部署。

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

任务 5:添加复制

  1. 目标大数据部署控制台导航菜单中,选择复制,然后选择添加复制(加号图标)。

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

    1. 在“复制信息”页上:

      1. 对于 Replicat type(复制类型),选择 Parallel(并行)Coordinated Replicat(协调复制)

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

      3. 选择 Next

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

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

      2. 对于目标身份证明,为 Google Big Query 连接选择别名

      3. 对于可用暂存位置,请从下拉列表中选择 Google Cloud Storage。

      4. 对于通过暂存别名,从下拉列表中选择 Google Cloud Storage 连接。

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

      MAP *.*, TARGET *.*;
    4. 在“Properties File(属性文件)”页上,根据需要配置所需的属性。查找标记为 #TODO 的项,然后选择下一步

      要考虑修改的一些属性包括:

      • gg.eventhandler.gcs.bucketMappingTemplate:提供将用作暂存存储的存储桶的名称
  3. 选择创建并运行

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

任务 6:验证更改数据捕获

对源 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 部署控制台中,选择提取名称 (ECDC),然后选择统计信息。验证 src_ociggll.src_city 是否具有 10 个插入。

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

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