新增PostgreSQL实时采集

本节介绍如何在实时计算中配置PostgreSQL实时采集任务。
实时计算支持PostgreSQL数据库的实时采集,当PostgreSQL发生insert、update等操作时,实时采集组件可根据PostgreSQL的WAL事务日志信息立即获取其操作,并实时将变更信息同步至目标数据源。

实时采集-参数配置

3 4 2021 11 57 57 AM

配置 说明

数据源/Schema

选择对应数据类型的已有数据源和Schema信息,才能进一步选择数据表

是否分表

选择分表后,可以设置多对多分表、分组写入;
目前主要针对Hive数据源实现多对多分表写入;

选择数据源表,支持多表合并写入一张表;
多表合并写入时,无法保证完全根据业务顺序写入;

采集起点

用户可选择从任务运行时开始、从指定的LSN开始采集两种采集起点
从任务运行时开始:任务提交处于"运行中"时,开始实时采集;
从指定的LSN开始:从用户输入的日志编号LSN开始进行实时采集;

数据操作

支持Insert、Update、Delete三种数据操作类型选择,当发生insert、update等操作时,实时采集组件可根据WAL事务日志信息立即获取其操作,并实时将变更信息同步至目标数据源。

Slot配置

支持选择已有Slot、创建Slot 两种方式;
当选择已有Slot时,平台拉取已有的Slot信息,用户在输入框内模糊搜索选择已有的Slot进行选择;
当选择创建Slot时,需要用户设定Slot的有效期,当有效期为临时时,每次任务停止时,对应临时Slot自动删除,平台无法恢复任务状态至对应CheckPoint,此时无法续跑 。

格式转换

勾选后,系统将会多层嵌套格式的JSON分解为单层结构,例如:{"a":1, "b": {"c":3}},将会被分解为:{"a":1,"b_c":3}

高级配置

以JSON格式添加高级参数,例如对关系型数据库可配置fetchSize,每类数据源支持不同的参数

当Postgresql出现锁表情况是,对应实时采集任务不会失败;当数据库连接失败或网络传传输超时时,采集任务失败。

如何开启PostgreSQL WAL支持实时采集?

查询当前Postgresql是否开启WAL的命令

---
SHOW wal_level
---

返回的结果 `logical`即为开启了WAL。

启用WAL level

---
alter system set wal_level= 'logical';
---

通过pg_ctl或者kill或者pg_reload_conf()函数使得对应修改生效。

操作步骤

具体操作可参考快速开始中的 实时采集

常见问题

Q:发布指定所有的表,在复制流消费期间,源数据库增加表,并对其进行增删改操作能否消费到?
A:能消费到新表的操作

Q:发布指定部分表,动态修改关联的表后,新关联的表能否消费到?
A:能,使用 ALTER PUBLICATION test1 ADD TABLE schema1.test2 ; 为名称为test1的发布添加schema1.test2,那么schema1.test2增删改,订阅test1的复制流就能消费到。

Q:发布指定的部分表。动态删除之后,能否消费到?
A:无法消费。

Q:发布指定所有的表之后,能否后续对这个发布关联的表进行动态调整(增删表)?
A:不能。

Q:Postgresql任务处于 运行中 状态,但长时间没有数据写入写出,怎么办?
A:可从Postgresql的数据情况切入进行排查,若数据库内长时间无数据写入且数据库连接正常,则需要查看数据库是否存在锁表现象。锁表会导致数据无法写入Postgresql,但实时采集读取的是WAL日志,因此实时采集正常,但由于没有数据写入,所以WAL日志内容无新增。