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

本文涉及的产品
实时计算 Flink 版,5000CU*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轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2月前
|
消息中间件 分布式计算 大数据
大数据-113 Flink DataStreamAPI 程序输入源 自定义输入源 非并行源与并行源
大数据-113 Flink DataStreamAPI 程序输入源 自定义输入源 非并行源与并行源
50 0
|
2月前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
2月前
|
分布式计算 监控 大数据
大数据-114 Flink DataStreamAPI 程序输入源 自定义输入源 Rich并行源 RichParallelSourceFunction
大数据-114 Flink DataStreamAPI 程序输入源 自定义输入源 Rich并行源 RichParallelSourceFunction
59 0
|
1月前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
79 9
|
3月前
|
算法 API Apache
Flink CDC:新一代实时数据集成框架
本文源自阿里云实时计算团队 Apache Flink Committer 任庆盛在 Apache Asia CommunityOverCode 2024 的分享,涵盖 Flink CDC 的概念、版本历程、内部实现及社区未来规划。Flink CDC 是一种基于数据库日志的 CDC 技术实现的数据集成框架,能高效完成全量和增量数据的实时同步。自 2020 年以来,Flink CDC 经过多次迭代,已成为功能强大的实时数据集成工具,支持多种数据库和数据湖仓系统。未来将进一步扩展生态并提升稳定性。
680 2
Flink CDC:新一代实时数据集成框架
|
3月前
|
消息中间件 canal 数据采集
Flink CDC 在货拉拉的落地与实践
陈政羽在Apache Asia Community Over Code 2024上分享了《货拉拉在Flink CDC生产实践落地》。文章介绍了货拉拉业务背景、技术选型及其在实时数据采集中的挑战与解决方案,详细阐述了Flink CDC的技术优势及在稳定性、兼容性等方面的应用成果。通过实际案例展示了Flink CDC在提升数据采集效率、降低延迟等方面的显著成效,并展望了未来发展方向。
582 14
Flink CDC 在货拉拉的落地与实践
|
4月前
|
Oracle 关系型数据库 新能源
Flink CDC 在新能源制造业的实践
本文撰写自某新能源企业的研发工程师 单葛尧 老师。本文详细介绍该新能源企业的大数据平台中 CDC 技术架构选型和 Flink CDC 的最佳实践。
470 13
Flink CDC 在新能源制造业的实践
|
2月前
|
消息中间件 资源调度 大数据
大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器
大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器
48 0
|
3月前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
1月前
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
1163 73
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎

相关产品

  • 实时计算 Flink版
  • 下一篇
    DataWorks