问题一:flink cdc delete主键删除源表一条记录,目标表未删除数据问题
flink cdc delete源表,目标表未删除,
如下:
INSERT INTO sink_table (
id,
device_id,
name,
device_type,
device_name,
gateway_serial_num,
points_model_id,
device_uniq_code,
etl_time)
SELECT
t1.id,
t1.device_id,
t2.device_type,
t2.device_name,
t2.gateway_serial_num,
t2.points_model_id,
CONCAT_WS('-', t1.station_id, t1.data_object_id),
CURRENT_TIMESTAMP
FROM table_a t1
LEFT JOIN
(
SELECT
id,
device_id,
name AS device_name,
cim_code AS device_type,
gateway_serial_num,
points_model_id
FROM table_b
UNION ALL
SELECT
id,
dg_id AS device_id,
name AS device_name,
type AS device_type,
gateway_serial_num,
CAST(NULL AS BIGINT) AS points_model_id
FROM table_c
) t2
ON t1.device_id = t2.id;
主表delete 一条数据:
delete from table_a where id=1202893267871432704;
查询目标表数据还在
参考回答:
如果删除源表中的某条记录后,目标表的数据仍然存在,可能是由于CDC尚未完成同步。请耐心等待一段时间,直到CDC完成同步操作。期间,请勿手动干预或清理目标表数据。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/567704
问题二:flink cdc delete主键删除源表,目标表未删除数据问题
flink cdc delete源表,目标表未删除,
如下:
INSERT INTO sink_table (
id,
device_id,
name,
device_type,
device_name,
gateway_serial_num,
points_model_id,
device_uniq_code,
etl_time)
SELECT
t1.id,
t1.device_id,
t2.device_type,
t2.device_name,
t2.gateway_serial_num,
t2.points_model_id,
CONCAT_WS('-', t1.station_id, t1.data_object_id),
CURRENT_TIMESTAMP
FROM table_a t1
LEFT JOIN
(
SELECT
id,
device_id,
name AS device_name,
cim_code AS device_type,
gateway_serial_num,
points_model_id
FROM table_b
UNION ALL
SELECT
id,
dg_id AS device_id,
name AS device_name,
type AS device_type,
gateway_serial_num,
CAST(NULL AS BIGINT) AS points_model_id
FROM table_c
) t2
ON t1.device_id = t2.id;
参考回答:
根据您的描述,看起来您的问题是希望通过 Flink CDC 功能从 source 表中读取数据并将其写入到目标表中,但是在源表已经被删除的情况下仍然继续执行查询。在这里,有几个重要的注意事项需要考虑到:
- 如果源表已经被删除,则 Flink CDC 可能会抛出异常或出现错误,因为它找不到源表。
- 即使源表已经被删除,您还可以从 Flink CDC 中检索到最后一次成功的快照,并将其写入目标表中。但是请注意,这可能不会产生期望的结果,因为源表中的数据已经被删除了。
- 如果您的目标是继续执行查询并且将现有结果写入目标表,请确保源表已经被正确地恢复,并确保查询能够在 Flink CDC 中成功运行。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/567609
问题三:Flink CDC结合业务场景使用的时候会去做数据分层嘛?
Flink CDC结合业务场景使用的时候会去做数据分层嘛?
参考回答:
在大多数情况下,Flink CDC 并非必需实施分层操作,但是可以根据实际需求考虑。Flink CDC 可以为企业提供高可靠性的流式计算框架,它可以动态处理变化,可以将数据库中的更改推送到多个下游系统进行处理。下面是一些可能需要分层的情况:
- 大规模数据迁移或同步:可以借助 Flink CDC 将数据复制到多个不同的目标系统中。
- 对不同级别和来源的逻辑合并:当涉及多个数据库或多级数据分发时,可以根据业务场景组合来自不同系统的数据源和多个实例,并实施特定的数据分层。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/567565
问题四:flink获取不到 scn是不是也是这个原因啊?
flink获取不到 scn是不是也是这个原因啊?有时候会出现找不到scn值,只能清空下游表重跑
参考回答:
在 Flink CDC 中,如果获取不到 SCN 值,可能是由于以下原因造成的:
- 错误的 CDC 配置:检查您的 CDC 配置,确认是否有正确的源数据库配置。
- 网络延迟或者带宽限制:网络延迟可能会影响 Flink CDC 读取 SCN 值的速度和准确性。
- Oracle 数据库未启用 CDC 功能:在 Flink CDC 启动前,请确保 Oracle 数据库启用了 CDC 功能。
- 版本兼容性问题:确保使用最新版本的 Flink CDC 插件,并检查 Oracle 数据库是否兼容 Flink CDC 插件。
- 同步数据过快:当大量同步时,可能会导致 Flink CDC 吞吐量降低,从而影响 SCN 值获取。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/567564
问题五:Flink CDC先前的版本,有这样的问题导致数据丢失场景?
Flink CDC先前的版本,有这样的问题导致数据丢失场景?
参考回答:
Flink CDC是一个基于Change Data Capture(CDC)技术的数据同步工具,可以将关系Flink CDC是一个基于Change Data Capture(CDC)技术的数据同步工具,可以将关系型数据库中的数据实时同步到Flink流处理中进行实时计算和分析。在实现CDC,即捕获数据库的变更数据时,Flink CDC是Flink社区开发的flink-cdc-connectors组件,这是一个可以直接从MySQL、PostgreSQL等数据库直接读取全量数据和增量变更数据的source组件。
然而,在使用Flink CDC时,确实存在数据丢失的场景。这可能是由于配置错误、数据源问题、数据目标问题或网络连接问题导致的。例如,如果是基于查询的CDC,有可能导致两次查询的中间一部分数据丢失,因为每次DML操作均有记录,无需像查询CDC这样发起全表扫描进行过滤。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/567563