使用流处理处理程序将数据从 PostgresSQL 复制到 Snowflake
了解如何使用 OCI GoldenGate 使用流处理处理程序将数据从 PostgreSQL 复制到 Snowflake。
开始之前
要成功完成此快速入门,您必须具有以下各项:
-
使用 PostgreSQL 访问 OCI 数据库
-
在 OCI Database with PostgreSQL 使用的 VCN 安全列表中打开端口 5432
-
访问 Snowflake
使用 PostgreSQL 设置 OCI 数据库
-
创建 OCI Database with PostgreSQL 。
-
在 OCI Database with PostgreSQL 中:
-
选择 Configurations 。
-
使用现有配置,例如
PostgreSQL.VM.Standard.E5.Flex-14-0_51。 -
选择 Copy configuration(复制配置),重命名它,在用户变量(读/写)下添加
wal_level,然后将其设置为 'logical'。 -
选择创建。
-
有关更多信息,请参见 Copying a Configuration 。
-
-
创建数据库系统时,使用
wal_level设置为 true 的配置。有关更多信息,请参见 Creating a Database System 。
-
-
使用 PostgreSQL 连接到 OCI Database。有关详细信息,请参阅连接到数据库。
-
使用 PostgreSQL 在 OCI Database 中为 GoldenGate 创建数据库和用户:
-
Database
-
创建数据库 ociggll;
-
\c ociggll;
-
创建方案 src_ociggll;
-
-
User
-
使用口令
<password>创建用户ggadmin; -
向 ggadmin 授予 DATABASE ociggll 上的所有权限;
-
GRANT SELECT ON ALL TABLE IN SCHEMA src_ociggll TO ggadmin;
-
-
设置 Snowflake 数据库
-
将公钥添加到 Snowflake 用户,例如:
ALTER USER example_user SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...'; -
使用示例方案创建目标表。
任务 1:创建 OCI GoldenGate 资源
此快速入门示例需要源和目标的部署和连接。
-
需要 GoldenGate for PostgreSQL 26ai。
-
为源 PostgreSQL 数据库创建 PostgreSQL 部署。
-
为目标 Snowflake 数据库创建大数据部署。
-
-
对于类型,从下拉列表中选择 OCI Database with PostgreSQL 。
-
对于数据库名称,输入
ociggll。 -
对于用户名,输入
ggadmin。 -
对于 Password ,输入您的口令。
-
对于 Security Protocol ,从下拉列表中选择 TLS ,然后选择 Prefer 。
-
-
创建具有以下值的 Snowflake 连接:
-
对于连接 URL ,输入
jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL。注:请确保将
<account_identifier>和<warehouse name>替换为相应的值。 -
对于 Authentication Type(验证类型),从下拉列表中选择 Key pair authentication(密钥对验证)。
注:对于 Snowflake Streaming,密钥对验证是唯一支持的验证类型。
-
在用户名中,输入名称。
-
上载之前创建的私钥。
-
在 "Private key password"(私有密钥密码)字段中输入私有密钥密码短语。
-
-
为目标大数据部署创建与 GoldenGate 的连接,然后将此连接分配给源 PostgreSQL 部署。
任务 2:启用补充日志记录
要启用补充日志记录,请执行以下操作:
-
启动 PostgreSQL GoldenGate 部署控制台:
-
从“Deployments(部署)”页面中,选择 PostgreSQL 部署以查看其详细信息。
-
在 PostgreSQL 部署详细信息页上,选择启动控制台。
-
在部署控制台登录页面上,输入任务 1 步骤 1 中提供的 GoldenGate 管理身份证明。
注:如果在创建部署时未选择 IAM 作为身份证明存储,则需要登录。
-
-
在部署控制台中,在左侧导航中选择 DB Connections(DB 连接),然后选择源 PostgreSQL 数据库,然后选择 Trandata 。
-
在“TRANDATA”页的“TRANDATA 信息”旁边,选择添加 TRANDATA (加号图标)。
-
在 "Trandata" 面板中,对于方案名称,输入
src_ociggll,然后选择提交。注:使用搜索字段搜索
src_ociggll并验证是否已添加表。
任务 3:创建提取
-
添加更改数据捕获提取:
-
在左侧导航中,选择提取,
-
在“提取”页上,选择添加提取(加号图标),然后按如下方式填写字段:
-
在“提取信息”页面上:
-
对于提取类型,选择更改数据捕获提取。
-
对于流程名称,输入提取的名称,例如
ECDC。 -
选择 Next 。
-
-
在“提取选项”页面上:
-
对于源身份证明,请从域下拉列表中选择 Oracle GoldenGate
-
从 Alias(别名)下拉列表中选择源 PostgreSQL 数据库。
-
对于“提取线索名称”,输入两个字符的线索名称,例如
C1。 -
选择 Next 。
-
-
在“提取参数”页上,将
MAP *.*, TARGET *.*;替换为以下内容:TABLE SRC_OCIGGLL.*;
-
-
选择创建并运行。
-
-
添加初始加载提取:
-
在“提取”页上,选择添加提取,然后按如下方式填写“添加提取”表单:
-
在“提取信息”页面上:
-
对于“提取”类型,选择初始加载提取。
-
对于进程名称,输入名称,如
EIL。 -
选择 Next 。
-
-
在“提取选项”页面上:
-
对于源身份证明,请从域下拉列表中选择 Oracle GoldenGate 。
-
从 Alias(别名)下拉列表中选择 PostgreSQL 数据库。
-
对于提取线索名称,输入两个字符的线索名称,例如
I1。 -
选择 Next 。
-
-
在“提取参数”页上,将文本区域的内容替换为以下内容:
EXTRACT EIL USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate EXTFILE I1, PURGE TABLE src_ociggll.*;注:在继续操作之前,请确保删除
USERIDALIAS前面的SOURCEDB参数。
-
-
选择创建并运行。
-
返回到“提取”页面,在此页面可以看到“提取”开始。
任务 4:创建初始加载提取的分配路径
要为初始加载提取创建分配路径,请执行以下操作:
-
在 Oracle Cloud 控制台的“部署”页上,选择目标大数据部署。
-
在部署详细信息页上,选择启动控制台,然后以管理员用户身份登录。
-
如果使用 IAM 身份证明存储,请继续执行 "Create a Distribution Path"(创建分发路径)步骤。如果使用 GoldenGate 身份证明存储,则创建源 GoldenGate 用于连接到目标 GoldenGate 的用户。
-
在导航菜单中,选择 User Administration 。
-
选择添加新用户(加号图标),按如下所示填写字段,然后选择提交:
-
对于用户名,输入
ggsnet。 -
对于角色,选择运算符。
-
输入两次口令进行验证。
-
-
-
在 source PostgreSQL 部署控制台中,为上一步中创建的用户创建路径连接。
-
在导航菜单中,选择路径连接。
-
选择添加路径连接(加号图标),按如下所示填写字段,然后选择提交:
-
对于身份证明别名,请输入
dpuser。 -
对于用户 ID,输入
ggsnet -
对于“Password(密码)”,输入上一步中使用的相同密码。
-
-
-
创建分配路径。
-
在服务菜单栏中,选择路径,然后选择添加分发路径(加号图标)。
-
按如下方式完成“Add Path(添加路径)”表单:
-
在“路径信息”页面上:
-
对于 Path Name(路径名),输入此路径的名称。
-
选择 Next 。
-
-
在“来源选项”页面上:
-
对于源提取,留空。
-
对于线索名称,输入“初始装入提取”线索名称 (
I1)。 -
选择 Next 。
-
-
在“目标选项”页面上:
-
对于目标,选择 wss 。
-
对于目标主机,输入目标部署 URL,不带 https:// 或任何尾随斜杠。
-
在端口号中,输入
443。 -
对于线索名称,输入
I1。 -
对于目标验证方法,选择用户 ID 别名。
-
对于域,输入在上一步中创建的域名。
-
对于 Alias ,输入在上一步 (
dpuser) 中创建的别名。 -
选择 Next 。
-
-
-
选择创建并运行。
返回到“分配服务”页面,您可以在该页面中查看创建的路径。
-
-
在 target 部署控制台中,查看通过分发路径创建的接收器路径:
-
选择路径。
-
查看路径详细信息。
-
任务 5:为初始装入添加复制
-
在目标大数据部署控制台中,添加初始加载复制。
-
在导航菜单中,选择 Replicats ,然后选择 Add Replicat (加号图标)。
-
在 "Replicats"(复制)页面上,完成 "Add Replicat"(添加复制)字段,如下所示:
-
在 "Replication Information" 页面上:
-
对于复制类型,选择协调复制。
-
对于进程名称,输入名称,例如
RIL。 -
选择 Next 。
-
-
在“复制选项”页面上:
-
对于复制线索名称,输入任务 2 (
I1) 中的线索名称。 -
对于目标,选择 "Snowflake"。
-
对于 Target Credentials(目标身份证明),选择 Snowflake 连接的域和别名。
-
对于可用别名,从下拉列表中选择一个别名,例如 Snowflake。
-
选择 Streaming 。
-
选择 Next 。
-
-
在“参数文件”页上,添加以下映射:
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; -
在“属性”页上,查看属性并添加
jvm.bootoptions= -Djdk.lang.processReaperUseDefaultStackSize=true。 -
选择创建并运行。
-
返回到 "Replicats"(复制)页面,您可以在该页面中查看复制详细信息。
-
-
要验证初始加载,请连接到 Snowflake 数据库并运行以下查询:
select * from SRCMIRROR_OCIGGLL.SRC_CITY; select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;输出应返回由于初始加载而加载到目标数据库表中的数据。
任务 6:创建用于更改数据捕获的分配路径
-
在 source PostgreSQL 部署控制台中,选择 Distribution Service 。
-
选择添加分发路径。
-
按如下方式完成“Add Path(添加路径)”表单:
-
在“路径信息”页面上:
-
在路径名中,输入名称。
-
选择 Next 。
-
-
在“来源选项”页面上:
-
对于源提取,选择更改数据捕获提取 (
ECDC)。 -
对于线索名称,选择更改数据捕获线索文件 (
C1)。 -
选择 Next 。
-
-
在“目标选项”页面上:
-
对于目标,选择 wss 。
-
对于目标主机,输入目标部署控制台 URL(您可以在部署详细信息页上找到此 URL,不带 https:// 或任何尾随斜杠)。
-
在端口号中,输入
443。 -
对于线索名称,输入
C1。 -
对于目标验证方法,选择用户 ID 别名。
-
对于域,输入域名。
-
对于 Alias ,输入别名。
-
-
选择创建路径并运行。
-
任务 7:添加用于更改数据捕获的复制
对源 PostgreSQL 数据库执行更新以验证复制到 Snowflake。
-
添加复制。
-
在目标大数据部署控制台中,选择管理服务,然后在导航菜单中,选择复制。
-
在 Replicats(复制)页面上,选择 Add Replicat(添加复制)(加号图标),然后按如下方式填写 "Add Replicat"(添加复制)表单:
- 在“复制信息”页上:
-
对于 Replicat type(复制类型),选择 Classic(经典)或 Coordinated(协调)。
-
对于进程名称,输入名称,如
RCDC。 -
选择 Next 。
-
- 在“复制选项”页面上:
-
对于复制线索名称,输入任务 3 (
C1) 中的线索名称。 -
对于目标,选择 "Snowflake"。
-
对于目标身份证明,选择 Snowflake 连接的域和别名。
-
选择 Streaming 。
-
-
在“参数文件”页上,添加以下映射,然后选择下一步:
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; -
在“属性”页上,查看属性,添加以下映射,然后选择创建并运行:
jvm.bootoptions= -Djdk.lang.processReaperUseDefaultStackSize=true
- 在“复制信息”页上:
返回到 "Replicats"(复制)页面,您可以在该页面中查看复制详细信息。
-
-
验证更改数据捕获:
-
对源 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); -
在源 PostgreSQL 部署控制台中,选择
RCDC,然后选择统计信息。验证src_ociggll.src_city是否具有 10 个插入。注:如果提取未捕获任何插入,则重新启动
ECDC提取。 -
在目标大数据部署控制台中,选择
RCDC,查看其详细信息和统计信息以验证插入数。
-