如何利用PostgreSQL进行变更数据捕获(CDC)操作?

功能描述

Postgres的CDC源表,即Postgres的流式源表,用于依次读取PostgreSQL数据库全量快照数据和变更数据,保证不多读一条也不少读一条数据,即使发生故障,也能采用Exactly Once方式处理。

如何利用PostgreSQL进行变更数据捕获(CDC)操作?插图1
(图片来源网络,侵删)

前提条件

PostgreSQL版本:要求Postgre版本为9.6或者10,11,12,且PostgreSQL的版本不能低于PostgreSQL 11。

增强型跨源连接:要与实例建立增强型跨源连接,且用户可以根据实际所需设置相应安全组规则。

插件:若Postgres表有update等操作,需要在PostgreSQL中执行下列语句,注意:test.cdc_order需要修改为实际的数据库和表。

ALTER TABLE test.cdc_order REPLICA IDENTITY FULL

如何利用PostgreSQL进行变更数据捕获(CDC)操作?插图3
(图片来源网络,侵删)

使用前请确认当前PostgreSQL是否包含默认的插件,可在PostgreSQL中使用下述语句查询当前插件。

SELECT name FROM pg_available_extensions;

若不包含默认插件名“decoderbufs”,则需要在创建PostgreSQL CDC源表中配置参数“decoding.plugin.name”,该参数指定PostgreSQL中已有的插件。

语法格式

create table postgresCdcSource (
  attr_name attr_type 
  (',' attr_name attr_type)* 
  (','PRIMARY KEY (attr_name, ...) NOT ENFORCED)
)
with (
  'connector' = 'postgres-cdc',   
  'hostname' = 'PostgresHostname',
  'username' = 'PostgresUsername',
  'password' = 'PostgresPassword',
  'database-name' = 'PostgresDatabaseName',
  'schema-name' = 'PostgresSchemaName',
  'table-name' = 'PostgresTableName'
);

参数说明

如何利用PostgreSQL进行变更数据捕获(CDC)操作?插图5
(图片来源网络,侵删)
参数名 是否必填 类型 描述
connector String connector类型,需配置为'postgres-cdc'。
hostname String Postgres数据库的IP地址或者Hostname。
username String Postgres数据库用户名。
password String Postgres数据库服务的密码。
database-name String 数据库名称。
schema-name String Postgres Schema名称。
Schema名称支持正则表达式以读取多个Schema的数据,例如test(.)*表示以test开头的所有schema。
table-name String Postgres表名。
表名支持正则表达式去读取多个表的数据,例如cdc_order(.)*表示以cdc_order开头的所有表。
port Integer Postgres数据库服务的端口号。
decoding.plugin.name String 根据Postgres服务上安装的插件确定,支持的插件列表如下:decoderbufs(默认值)、wal2json、wal2json_rds、wal2json_streaming、wal2json_rds_streaming、pgoutput。
debezium. String 更细粒度控制Debezium客户端的行为,debezium.snapshot.mode' = 'never'。
建议每个表都设置debezium.slot.name参数,以避免出现“PSQLException: ERROR: replication slot "debezium" is active for PID 974”报错。
pwd_auth_name String DLI侧创建的Password类型的跨源认证名称。
使用跨源认证则无需在作业中配置账号和密码。

注意事项

安全性:Flink跨源开发场景中直接配置跨源认证信息存在密码泄露的风险,优先推荐您使用DLI提供的跨源认证。

性能:PostgreSQL CDC源表不支持并行读取,因为只有一个任务可以接收binlog事件。

Postgres CDC源表是一种强大的工具,可以帮助用户高效地处理PostgreSQL数据库中的变更数据,确保数据的一致性和完整性。

以上就是关于“postgres_Postgres CDC源表”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/74312.html

小末小末
上一篇 2024年10月12日 06:41
下一篇 2024年10月12日 06:52

相关推荐