PostgreSQLCDC数据增量抽取

PostgreSQL CDC 客户端

支持的管道类型:
  • 数据收集器

后绿 SQL CDC 客户端源处理预写日志记录 (WAL) 数据,以便为后绿SQL 数据库生成更改数据捕获记录。使用后格雷SQL CDC 客户端源处理来自后绿色SQL 9.4或更高版本的WAR数据。早期版本不支持 WAL。

您可以使用此源来执行数据库复制。您可以将单独的管道与 JDBC 查询使用者或 JDBC 多表使用者源结合使用,以读取现有数据。然后使用 PostgreSQL CDC 客户端源启动管道,以处理后续更改。

后greSQL CDC客户端将单个事务视为单个记录。它可以生成两种类型的记录:一种用于数据更改,另一种用于数据定义语言 (DDL) 更新。

由于每个数据更改事务可以包含多个 CRUD 操作,因此 PostgreSQL CDC 客户端源还可以在记录中包含多个操作。因此,源不会将 CRUD 操作写入 sdc.operation.type 记录标头属性。根据您的使用案例,您可以使用脚本处理器根据需要转换记录。或者,您可以使用字段透视器和其他处理器来分隔数据,以便为每个操作创建记录。

配置 PostgreSQL CDC 客户端时,可以配置更改捕获详细信息,例如要从中读取的架构和表、要使用的初始更改以及要包括的操作。

定义要使用的复制槽的名称,并指定是否在关闭时删除复制槽。您还可以指定当源遇到不受支持的数据类型时的行为,并将记录中这些字段的数据作为未解析的字符串包括在内。当源数据库具有高精度时间戳时,可以将源配置为写入字符串值而不是日期时间值以保持精度。

要确定源连接到数据库的方式,请指定连接信息、查询间隔、重试次数以及所需的任何定制 JDBC 配置属性。 您可以配置高级连接属性。要使用早于 4.0 的 JDBC 版本,请指定驱动程序类名并定义运行状况检查查询。

注意:连接到数据库的用户必须具有复制或超级用户角色。

数据库版本

流集已使用以下数据库版本测试了后格雷SQL CDC 客户端源:
  • PostgreSQL 9.4.18
  • PostgreSQL 9.6.2
  • PostgreSQL 9.6.9
  • PostgreSQL 10.4

连接到后地理数据库数据库时,不需要安装 JDBC 驱动程序。数据收集器包括后绿色SQL所需的JDBC驱动程序。

PostgreSQL 先决条件

若要使 PostgreSQL CDC 客户端源能够读取预写日志记录 (WAL) 更改的数据捕获信息,必须安装 wal2json 逻辑解码器。在每个被监视的 PostgreSQL 实例上安装 wal2json 以进行更改。

流集在 GitHub 上提供 wal2json 逻辑解码器。若要安装 wal2json,请按照 README.md 文件的“生成和安装”部分中的说明进行操作。

然后,按照 README.md 文件的“配置”部分中的配置说明进行操作。

架构、表名和排除模式

配置 PostgreSQL CDC 客户端源时,可以指定包含要处理的更改捕获数据的表。要指定表,请定义架构、表名模式和可选的排除模式。

定义架构和表名模式时,可以使用正则表达式跨多个架构定义一组表或一组表。需要时,还可以使用正则表达式定义排除模式,以从较大的集合中排除表的子集。

例如,假设您要处理销售架构中以 SALES 开头的所有表的变更数据捕获数据,同时排除以短划线 (-) 和单字符后缀结尾的表。可以使用以下配置来指定要处理的表:
  • 架构:销售
  • 表名模式: 销售*
  • 排除模式:销售。

初始更改

初始更改是预写日志记录 (WAL) 数据中要开始处理的点。启动管道时,PostgreSQL CDC 客户端将从指定的初始更改开始处理,并一直持续到您停止管道为止。

请注意,后greSQL CDC客户端进程仅更改捕获数据。如果需要现有数据,则可以在启动 PostgreSQL CDC 客户端管道之前,在单独的管道中使用 JDBC 查询使用者或 JDBC 多表使用者来读取表数据。

后greSQL CDC客户端提供了几种配置初始更改的方法:

从最新更改

源处理启动管道后发生的所有更改。

从指定的日期时间

源处理在指定日期时间及以后发生的所有更改。使用以下格式:日-月-年-HH24:米:秒

从指定的日志序列号 (LSN)

源处理在指定的 LSN 及更高版本中发生的所有更改。使用指定的 LSN 时,源开始处理与 LSN 关联的时间戳。如果在WAL数据中找不到LSN,则源继续从下一个可用的更高LSN读取。

通常,数据库管理员可以提供要使用的 LSN。

您希望处理销售架构中的所有现有数据,然后捕获更改的数据,将所有数据写入 Google 大表。为此,请创建两个管道。

要从模式中读取现有数据,请将管道与 JDBC 多表使用者和 Googl

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将MySQL数据增量抽取到Hive,可以使用以下步骤: 1. 配置MySQL和Hive的连接信息。 2. 创建一个MySQL表,用于保存增量数据。 3. 在MySQL中创建一个触发器,用于在数据发生变化时自动将新增数据插入到增量表中。 4. 使用Sqoop将增量表中的数据导入到Hive中。 5. 使用Hive进行数据分析和处理。 以下是一个示例代码,用于将MySQL中的数据增量抽取到Hive中: ``` # 配置MySQL和Hive的连接信息 export MYSQL_HOST=localhost export MYSQL_PORT=3306 export MYSQL_DATABASE=test export MYSQL_TABLE=mytable export MYSQL_USERNAME=root export MYSQL_PASSWORD=password export HIVE_HOST=localhost export HIVE_PORT=10000 export HIVE_DATABASE=test export HIVE_TABLE=mytable # 创建一个MySQL表,用于保存增量数据 mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USERNAME -p$MYSQL_PASSWORD $MYSQL_DATABASE << EOF CREATE TABLE IF NOT EXISTS incremental_data ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(255) DEFAULT NULL, age INT(11) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; EOF # 创建一个触发器,用于在数据发生变化时自动将新增数据插入到增量表中 mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USERNAME -p$MYSQL_PASSWORD $MYSQL_DATABASE << EOF CREATE TRIGGER incremental_trigger AFTER INSERT ON $MYSQL_TABLE FOR EACH ROW BEGIN INSERT INTO incremental_data (name, age) VALUES (NEW.name, NEW.age); END; EOF # 使用Sqoop将增量表中的数据导入到Hive中 sqoop import \ --connect jdbc:mysql://$MYSQL_HOST:$MYSQL_PORT/$MYSQL_DATABASE \ --username $MYSQL_USERNAME \ --password $MYSQL_PASSWORD \ --table incremental_data \ --hive-import \ --hive-table $HIVE_TABLE \ --hive-database $HIVE_DATABASE \ --incremental append \ --check-column id \ --last-value 0 # 使用Hive进行数据分析和处理 hive -e "SELECT * FROM $HIVE_DATABASE.$HIVE_TABLE;" ``` 注意:在实际使用中,需要根据具体情况调整代码中的连接信息和表名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVASoftEngineer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值