Flink CDC产品常见问题之pg cdc程序已经停了但是执行删不掉如何解决

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介: Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。

问题一:Flink CDC里pg cdc程序已经停了,但是执行删不掉什么回事?


Flink CDC里pg cdc程序已经停了,但是执行 pg_drop_replication_slot('flink')删不掉是怎么回事?CREATE_REPLICATION_SLOT "flink" LOGICAL pgoutp。ut;


参考回答:

在 PostgreSQL 中,当你尝试删除一个 CDC (Change Data Capture) 复制槽(replication slot)时,如果发现即使该CDC程序已经停止运行,仍然无法通过 pg_drop_replication_slot('flink') 删除复制槽,可能有以下原因:

  1. CDC程序仍在连接:确保负责读取该复制槽的 Flink CDC 进程已完全终止,并且没有其他进程正在使用这个复制槽。即使 Flink CDC 任务被停了,也可能存在残留的连接或者后台线程尚未完全退出。
  2. 保留活动事务(Active Transactions)
  • 如果 Flink CDC 在关闭前有一个未提交或回滚的事务,该复制槽可能会因为仍有活动事务而不能被删除。
  • 需要检查并清理任何与该槽相关的遗留事务,例如通过查看 pg_stat_activity 系统视图来确定是否有任何活动事务关联到该槽。
  1. 复制槽中有未确认的更改
  • 如果Flink CDC在停止之前还有未处理的数据,PostgreSQL会保留复制槽直到所有更改被下游消费者确认。
  • 可以先尝试查询 pg_replication_slots 视图,查看槽的状态和滞后信息,如果看到 confirmed_flush_lsn 小于 restart_lsn 或者 wal_status 显示为 active,那么需要确保所有的数据都已经被正确处理并确认。
  1. 持久化槽(Permanent Slots)
  • 默认情况下创建的是临时逻辑复制槽,当不再使用时可以自动删除。但如果你创建的是持久化的逻辑复制槽,那么必须手动删除它。
  • 若要强制删除持久化槽,你需要在 pg_drop_replication_slot 之后加上 FORCE 参数,即执行:pg_drop_replication_slot('flink' , FORCE);

请务必谨慎操作,尤其是在生产环境中,避免造成数据丢失或一致性问题。在尝试强制删除槽之前,请确保确实没有进程依赖此槽以及槽内数据已被妥善处理。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/590896


问题二:用Flink CDC3.0整库同步mysql到starRock提交任务异常,请问是什么原因?


用Flink CDC3.0整库同步mysql到starRock提交任务异常,请问是什么原因?


参考回答:

根据您提供的信息,Flink CDC 3.0在将MySQL整库同步到StarRock时出现异常。这可能是由于多种原因导致的,以下是一些建议供您参考:

  1. 检查MySQL和StarRock的连接配置是否正确。确保数据库地址、端口、用户名和密码等信息正确无误。
  2. 检查MySQL和StarRock的数据表结构是否一致。如果数据表结构不一致,可能会导致同步过程中出现问题。
  3. 检查Flink CDC 3.0的配置参数是否正确。例如,检查源数据库和目标数据库的类型、版本等。
  4. 查看Flink CDC 3.0的日志文件,以获取更多关于异常的详细信息。日志文件中可能包含错误消息、堆栈跟踪等,这些信息有助于诊断问题。
  5. 如果问题仍然存在,可以尝试使用其他工具或方法进行数据同步,例如使用Spark SQL或其他ETL工具。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/590949


问题三:flink cdc 集群的mysql要怎么写呢?


flink cdc 集群的mysql要怎么写呢?mysql集群存储节点:

10.85.25.201 3213-3216

10.85.25.202 3213-3216

10.85.25.203 3213-3216

10.85.25.204 3213-3216

WITH (

'connector' = 'mysql-cdc',

'hostname' = '??',

'port' = '??',

'username' = 'test',

'password' = 'test',

'database-name' = 'SETL_DB',

'table-name' = 'acct');


参考回答:

在Flink CDC集群中,要配置MySQL集群存储节点,需要将hostnameport参数设置为相应的MySQL节点地址和端口。以下是配置示例:

WITH (
  'connector' = 'mysql-cdc',
  'hostname' = '10.85.25.201',
  'port' = '3213',
  'username' = 'test',
  'password' = 'test',
  'database-name' = 'SETL_DB',
  'table-name' = 'acct'
)

请根据实际情况替换hostnameport的值。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/591620


问题四:使用FLink CDC 3.0 ,将MySQL数据同步到SR遇到一些问题


运行环境

MySQL:5.7x

StarRocks:2.5

FLink:1.18.0

FLink-CDC:3.0

配置文件如下

source:
  type: mysql
  hostname: xxx
  port: 3306
  username: xxx
  password: xxx
  tables: xxx_db.\.*
  server-id: 1
  server-time-zone: Asia/Shanghai
sink:
  type: starrocks
  name: StarRocks Sink
  jdbc-url: jdbc:mysql://xxx:9030
  load-url: xxx:8030
  username: root
  password: ""
  table.create.properties.replication_num: 1
pipeline:
  name: Sync MySQL Database to StarRocks
  parallelism: 1

DDL问题:

  1. 添加字段,可以同步成功,但任务会报错,必须取消任务重启后才能恢复正常
  2. 删除字段,可以同步成功,问题同上
  3. 修改字段类型,不会同步
    问题1的错误日志片段如下:
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: temp of AddColumnEvent is already existed
 at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
 at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
 at com.ververica.cdc.runtime.operators.schema.SchemaOperator.sendRequestToCoordinator(SchemaOperator.java:123)
 ... 30 more
Caused by: java.lang.IllegalArgumentException: temp of AddColumnEvent is already existed
 at com.ververica.cdc.common.utils.SchemaUtils.applyAddColumnEvent(SchemaUtils.java:73)
 at com.ververica.cdc.common.utils.SchemaUtils.applySchemaChangeEvent(SchemaUtils.java:53)
 at com.ververica.cdc.runtime.operators.schema.coordinator.SchemaManager.applySchemaChange(SchemaManager.java:113)
 at com.ververica.cdc.runtime.operators.schema.coordinator.SchemaRegistryRequestHandler.handleSchemaChangeRequest(SchemaRegistryRequestHandler.java:102)
 at com.ververica.cdc.runtime.operators.schema.coordinator.SchemaRegistry.handleCoordinationRequest(SchemaRegistry.java:157)
 at org.apache.flink.runtime.scheduler.DefaultOperatorCoordinatorHandler.deliverCoordinationRequestToCoordinator(DefaultOperatorCoordinatorHandler.java:143)
 at org.apache.flink.runtime.scheduler.SchedulerBase.deliverCoordinationRequestToCoordinator(SchedulerBase.java:1070)
 at org.apache.flink.runtime.jobmaster.JobMaster.sendRequestToCoordinator(JobMaster.java:616)
 at jdk.internal.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.base/java.lang.reflect.Method.invoke(Method.java:568)
 at org.apache.flink.runtime.rpc.pekko.PekkoRpcActor.lambda$handleRpcInvocation$1(PekkoRpcActor.java:309)
 at org.apache.flink.runtime.concurrent.ClassLoadingUtils.runWithContextClassLoader(ClassLoadingUtils.java:83)
 at org.apache.flink.runtime.rpc.pekko.PekkoRpcActor.handleRpcInvocation(PekkoRpcActor.java:307)
 at org.apache.flink.runtime.rpc.pekko.PekkoRpcActor.handleRpcMessage(PekkoRpcActor.java:222)
 at org.apache.flink.runtime.rpc.pekko.FencedPekkoRpcActor.handleRpcMessage(FencedPekkoRpcActor.java:85)
 at org.apache.flink.runtime.rpc.pekko.PekkoRpcActor.handleMessage(PekkoRpcActor.java:168)
 at org.apache.pekko.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:33)
 at org.apache.pekko.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:29)
 at scala.PartialFunction.applyOrElse(PartialFunction.scala:127)

DML问题:

  1. 取消同步任务,在MySQL上删除一条数据,然后重启同步任务,删除的数据无法同步在SR上删除;但同样的操作,添加数据可以同步


参考回答:

这个问题可能是由于Flink CDC在处理删除字段时出现了问题。你可以尝试以下方法解决这个问题:

  1. 检查FLink CDC的版本,确保它是最新的。如果不是,请升级到最新版本,看看问题是否得到解决。
  2. 如果问题仍然存在,你可以尝试在FLink CDC的GitHub仓库中提交一个issue,详细描述你遇到的问题。这样,FLink团队可能会关注这个问题,并在后续版本中修复它。
  3. 作为临时解决方案,你可以尝试在同步任务中使用DELETE操作符,而不是直接删除数据。这样,FLink CDC应该能够正确处理删除操作。例如:
DELETE FROM your_table WHERE some_condition;


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/591687


问题五:Flink CDC里写数据到hdfs的hudi表,为什么看不到数据文件啊?


Flink CDC里写数据到hdfs的hudi表,为什么看不到数据文件啊?hudi写数据前需要建表吗?算子页面上都是0%,下面字节传输和接受是有值的,这是什么原因啊?


参考回答:

你这个没有压缩计划生成,一只没有执行compact肯定不会有parquet文件的。再看下配置:checkpoint的时长,还有compact的策略等等。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/592235

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
3月前
|
SQL 关系型数据库 Apache
从 Flink 到 Doris 的实时数据写入实践 —— 基于 Flink CDC 构建更实时高效的数据集成链路
本文将深入解析 Flink-Doris-Connector 三大典型场景中的设计与实现,并结合 Flink CDC 详细介绍了整库同步的解决方案,助力构建更加高效、稳定的实时数据处理体系。
1661 0
从 Flink 到 Doris 的实时数据写入实践 —— 基于 Flink CDC 构建更实时高效的数据集成链路
|
6月前
|
数据采集 SQL canal
Amoro + Flink CDC 数据融合入湖新体验
本文总结了货拉拉高级大数据开发工程师陈政羽在Flink Forward Asia 2024上的分享,聚焦Flink CDC在货拉拉的应用与优化。内容涵盖CDC应用现状、数据入湖新体验、入湖优化及未来规划。文中详细分析了CDC在多业务场景中的实践,包括数据采集平台化、稳定性建设,以及面临的文件碎片化、Schema演进等挑战。同时介绍了基于Apache Amoro的湖仓融合架构,通过自优化服务解决小文件问题,提升数据新鲜度与读写平衡。未来将深化Paimon与Amoro的结合,打造更高效的入湖生态与自动化优化方案。
371 1
Amoro + Flink CDC 数据融合入湖新体验
|
6月前
|
SQL 关系型数据库 MySQL
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
Apache Flink CDC 3.4.0 版本正式发布!经过4个月的开发,此版本强化了对高频表结构变更的支持,新增 batch 执行模式和 Apache Iceberg Sink 连接器,可将数据库数据全增量实时写入 Iceberg 数据湖。51位贡献者完成了259次代码提交,优化了 MySQL、MongoDB 等连接器,并修复多个缺陷。未来 3.5 版本将聚焦脏数据处理、数据限流等能力及 AI 生态对接。欢迎下载体验并提出反馈!
1157 1
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
|
7月前
|
SQL API Apache
Dinky 和 Flink CDC 在实时整库同步的探索之路
本次分享围绕 Dinky 的整库同步技术演进,从传统数据集成方案的痛点出发,探讨了 Flink CDC Yaml 作业的探索历程。内容分为三个部分:起源、探索、未来。在起源部分,分析了传统数据集成方案中全量与增量割裂、时效性低等问题,引出 Flink CDC 的优势;探索部分详细对比了 Dinky CDC Source 和 Flink CDC Pipeline 的架构与能力,深入讲解了 YAML 作业的细节,如模式演变、数据转换等;未来部分则展望了 Dinky 对 Flink CDC 的支持与优化方向,包括 Pipeline 转换功能、Transform 扩展及实时湖仓治理等。
871 12
Dinky 和 Flink CDC 在实时整库同步的探索之路
|
5月前
|
消息中间件 SQL 关系型数据库
Flink CDC + Kafka 加速业务实时化
Flink CDC 是一种支持流批一体的分布式数据集成工具,通过 YAML 配置实现数据传输过程中的路由与转换操作。它已从单一数据源的 CDC 数据流发展为完整的数据同步解决方案,支持 MySQL、Kafka 等多种数据源和目标端(如 Delta Lake、Iceberg)。其核心功能包括多样化数据输入链路、Schema Evolution、Transform 和 Routing 模块,以及丰富的监控指标。相比传统 SQL 和 DataStream 作业,Flink CDC 提供更灵活的 Schema 变更控制和原始 binlog 同步能力。
|
8月前
|
Oracle 关系型数据库 Java
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
本文介绍通过Flink CDC实现Oracle数据实时同步至崖山数据库(YashanDB)的方法,支持全量与增量同步,并涵盖新增、修改和删除的DML操作。内容包括环境准备(如JDK、Flink版本等)、Oracle日志归档启用、用户权限配置、增量日志记录设置、元数据迁移、Flink安装与配置、生成Flink SQL文件、Streampark部署,以及创建和启动实时同步任务的具体步骤。适合需要跨数据库实时同步方案的技术人员参考。
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
|
8月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
1737 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
8月前
|
存储 SQL Java
Flink CDC + Hologres高性能数据同步优化实践
本文整理自阿里云高级技术专家胡一博老师在Flink Forward Asia 2024数据集成(二)专场的分享,主要内容包括:1. Hologres介绍:实时数据仓库,支持毫秒级写入和高QPS查询;2. 写入优化:通过改进缓冲队列、连接池和COPY模式提高吞吐量和降低延迟;3. 消费优化:优化离线场景和分区表的消费逻辑,提升性能和资源利用率;4. 未来展望:进一步简化用户操作,支持更多DDL操作及全增量消费。Hologres 3.0全新升级为一体化实时湖仓平台,提供多项新功能并降低使用成本。
654 1
Flink CDC + Hologres高性能数据同步优化实践
|
8月前
|
分布式计算 关系型数据库 MySQL
Flink CDC 3.3.0 发布公告
Flink CDC 3.3.0 发布公告
357 14
|
8月前
|
SQL 弹性计算 DataWorks
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
398 6

相关产品

  • 实时计算 Flink版