将 PostgreSQL 中的数据复制到 Google BigQuery
了解如何使用 OCI GoldenGate 将数据从 PostgreSQL 复制到 Google BigQuery。
开始之前
要成功完成此快速入门,您必须具有以下各项:
要成功完成此快速入门,您必须具有以下各项:
-
PostgreSQL 安装,用作源数据库(请参阅“环境设置”)
-
在 VCN 的安全列表中打开端口 5432
-
注:请确保 GCS 存储桶和 BigQuery 数据集位于同一位置/区域。
环境设置:PostgreSQL
要为此快速入门设置环境,请执行以下操作:
-
运行以下命令以安装 PostgreSQL 。
-
安装 PostgreSQL 服务器:
sudo yum install postgresql-server -
安装 postgresql-contrib 模块以避免此 SQL 异常错误:
sudo yum install postgresql-contrib -
创建新的 PostgreSQL 数据库集群:
sudo postgresql-setup --initdb -
启用 postgresql.service:
sudo systemctl enable postgresql.service -
启动 postgresql.service:
sudo systemctl start postgresql.service
-
-
默认情况下,PostgreSQL 仅允许本地连接。允许远程连接到 PostgreSQL 。
-
在
/var/lib/pgsql/data/postgresql.conf中,为复制准备数据库。 -
找到并取消注释
listen_addresses = 'localhost'并将 localhost 更改为星号 (`):listen_addresses = '*' -
按如下方式设置以下参数:
-
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 。
- 重新启动 PostgreSQL 服务器:
sudo systemctl restart postgresql.service- 如果使用 Oracle Cloud Compute 托管 PostgreSQL,请打开端口 5432:
sudo firewall-cmd --permanent --add-port=5432/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all -
-
在 VCN 的安全列表中打开端口 5432。
-
> sudo su - postgres > psql注:或者,如果上述示例不起作用,则可以输入
sudo su - postgres psql。 -
设置 PostgreSQL。
-
下载并运行 seedSRCOCIGGLL_PostgreSQL.sql 以设置数据库并加载示例数据。
-
运行以下命令以设置用户(确保将
<password>替换为实际密码):
create user ggadmin with password '<password>'; alter user ggadmin with SUPERUSER; GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin; -
-
任务 1:创建 OCI GoldenGate 资源
-
为源 PostgreSQL 数据库创建部署。
-
为目标 Google BigQuery 创建大数据部署。
-
创建与目标 Google BigQuery 的连接。
-
创建与源 PostgreSQL 数据库的连接。
-
对于类型,请确保选择 PostgreSQL Server。
-
对于数据库名称,输入
ociggll。 -
对于主机,输入运行 PostgreSQL 的计算实例的公共 IP。
-
对于端口,输入
5432。 -
对于用户名,输入
ggadmin。 -
对于 Password(密码),输入密码。
-
对于 Security Protocol(安全协议),选择 Plain(普通)。
-
任务 2:启用补充日志记录
要启用补充日志记录,请执行以下操作:
-
启动 PostgreSQL GoldenGate 部署控制台:
-
从“Deployments(部署)”页面中,选择 PostgreSQL 部署以查看其详细信息。
-
在 PostgreSQL 部署详细信息页上,选择启动控制台。
-
在部署控制台登录页面上,输入任务 1 步骤 1 中提供的 GoldenGate 管理身份证明。
注:如果在创建部署时未选择 IAM 作为身份证明存储,则需要登录。
-
-
在部署控制台中,在左侧导航中选择 DB Connections(DB 连接),然后选择源 PostgreSQL 数据库,然后选择 Trandata 。
-
在“TRANDATA”页的“TRANDATA 信息”旁边,选择添加 TRANDATA (加号图标)。
-
在 "Trandata" 面板中,对于方案名称,输入
src_ociggll,然后选择提交。注:使用搜索字段搜索
src_ociggll并验证是否已添加表。
任务 3:创建提取
要添加更改数据捕获提取,请执行以下操作:
-
在左侧导航中,选择 Extracts 。
-
在“提取”页上,选择添加提取(加号图标),然后按如下方式填写字段:
-
在“提取信息”页面上:
-
对于提取类型,选择更改数据捕获提取。
-
对于流程名称,输入提取的名称,例如
ECDC。 -
选择 Next 。
-
-
在“提取选项”页面上:
-
对于源身份证明,请从域下拉列表中选择 Oracle GoldenGate
-
从 Alias(别名)下拉列表中选择源 PostgreSQL 数据库。
-
对于“提取线索名称”,输入两个字符的线索名称,例如
C1。 -
选择 Next 。
-
-
在“提取参数”页上,将
MAP *.*, TARGET *.*;替换为以下内容:TABLE SRC_OCIGGLL.*;
-
-
选择创建并运行。
您将返回到“提取”页面,在此页面可以看到“提取”开始。
任务 4:创建用于更改数据捕获的分配路径
要为更改数据捕获创建分发路径,请完成以下操作:
-
在 Oracle Cloud 控制台的“部署”页上,选择目标大数据部署。
-
选择添加分发路径。
-
按如下方式完成“Add Path(添加路径)”表单:
-
在“路径信息”页面上:
-
在路径名中,输入名称。
-
选择 Next 。
-
-
在“来源选项”页面上:
-
对于源提取,选择更改数据捕获提取 (
ECDC)。 -
对于线索名称,选择更改数据捕获线索文件 (
C1)。 -
选择 Next 。
-
-
在“目标选项”页面上:
-
对于目标,选择 wss 。
-
对于目标主机,输入目标部署控制台 URL(您可以在部署详细信息页上找到此 URL,不带 https:// 或任何尾随斜杠)。
-
在端口号中,输入
443。 -
对于线索名称,输入
C1。 -
对于目标验证方法,选择用户 ID 别名。
-
对于域,输入域名。
-
对于 Alias ,输入别名。
-
-
选择创建路径并运行。
-
任务 5:添加复制
-
在目标大数据部署控制台导航菜单中,选择复制,然后选择添加复制(加号图标)。
-
在 Replicats(复制)页面上,选择 Add Replicat(添加复制)(加号图标),然后按如下方式填写 Add Replicat(添加复制)表单:
-
在“复制信息”页上:
-
对于 Replicat type(复制类型),选择 Parallel(并行)或 Coordinated Replicat(协调复制)。
-
对于进程名称,输入名称,如
RCDC。 -
选择 Next 。
-
-
在“复制选项”页面上:
-
对于复制线索名称,输入任务 3 (
C1) 中的线索名称。 -
对于目标身份证明,为 Google Big Query 连接选择域和别名。
-
对于可用暂存位置,请从下拉列表中选择 Google Cloud Storage。
-
对于通过暂存别名,从下拉列表中选择 Google Cloud Storage 连接。
-
-
在“参数文件”页上,添加以下映射,然后选择下一步:
MAP *.*, TARGET *.*; -
在“Properties File(属性文件)”页上,根据需要配置所需的属性。查找标记为
#TODO的项,然后选择下一步。要考虑修改的一些属性包括:
gg.eventhandler.gcs.bucketMappingTemplate:提供将用作暂存存储的存储桶的名称
-
-
选择创建并运行。
返回到 "Replicats"(复制)页面,您可以在该页面中查看复制详细信息。
任务 6:验证更改数据捕获
对源 PostgreSQL 数据库执行更新以验证复制到 Google BigQuery。
-
运行以下脚本以对 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); -
在源 PostgreSQL 部署控制台中,选择提取名称 (
ECDC),然后选择统计信息。验证 src_ociggll.src_city 是否具有 10 个插入。注:如果提取未捕获任何插入,则重新启动
ECDC提取。 -
在目标大数据部署控制台中,选择复制名称,查看其详细信息,然后检查统计信息以验证插入数。