flinkcdc pg程序运行中显示状态ttl 被清理是什么情况?
当 Flink CDC 的 PostgreSQL Connector 运行时显示状态 TTL 被清理,通常是指 Flink 清理了状态存储中的过期数据。
TTL (Time-To-Live) 是一种机制,用于设置状态在存储中的保留时间。Flink CDC 中的状态存储用于保存任务的状态信息,例如保存已处理的数据、窗口的聚合结果等。当使用 TTL 机制时,Flink 将根据设置的时间限制来清理过期的状态,并释放存储空间。
可能的情况包括:
状态过期:根据你的描述,Flink CDC 清理了状态存储中的过期数据。这可能意味着你的 Flink 作业或者相关组件配置了 TTL 参数,并且某些状态数据已达到了过期时间。有关如何配置和使用状态存储的 TTL,请参考 Flink 文档中关于状态存储的详细说明。
存储空间限制:另一个可能的原因是状态存储达到了其容量上限,因此 Flink 根据策略清理了部分过期数据以释放存储空间。这可以防止状态存储无限增长并导致内存溢出等问题。
在日志中查找与状态清理相关的详细信息,可能会提供更多关于状态 TTL 被清理的上下文。你可以检查 Flink 日志以及相关组件(如 RocksDB 等)的日志,查找与清理状态相关的日志条目。这些日志可能会提供有关清理过程、过期数据以及存储空间限制的详细信息。
如果你需要进一步了解状态的 TTL 清理行为和配置,请参考 Flink 文档中关于状态管理和 TTL 的内容。
在Flink CDC中,当开启维表数据的TTL缓存功能时,缓存中的数据会在指定的时间窗口内自动过期并被清理。当维表数据被清理时,Flink CDC会输出一条类似于以下的日志信息:
routeros
Copy
2021-08-16 10:25:30,101 INFO org.apache.flink.streaming.api.functions.sink.PrintSinkFunction - [1] 2021-08-16 10:25:30.101 UTC: [event_time=2021-08-16T10:25:30.100, key=1, value=Record(id=1, name=foo), metadata=SourceRecordMetadata{offset=[..], partition=0, topic='cdc-test.public.dim_table', timestamp=0}]
2021-08-16 10:25:30,101 INFO org.apache.flink.streaming.api.functions.sink.PrintSinkFunction - [1] 2021-08-16 10:25:30.101 UTC: [event_time=2021-08-16T10:25:30.100, key=2, value=Record(id=2, name=bar), metadata=SourceRecordMetadata{offset=[..], partition=0, topic='cdc-test.public.dim_table', timestamp=0}]
2021-08-16 10:25:30,101 INFO org.apache.flink.streaming.api.functions.sink.PrintSinkFunction - [1] 2021-08-16 10:25:30.101 UTC: [event_time=2021-08-16T10:25:30.100, key=3, value=Record(id=3, name=baz), metadata=SourceRecordMetadata{offset=[..], partition=0, topic='cdc-test.public.dim_table', timestamp=0}]
2021-08-16 10:25:30,102 INFO org.apache.flink.connector.jdbc.table.JdbcOutputFormat - [1] Flush 3 rows into the JDBC sink in thread 'pool-1-thread-1' (parallelism = 1, taskIdx = 0). Execution time = 1 ms.
2021-08-16 10:25:30,103 INFO io.debezium.relational.Table - TTL expired on cache entry for table 'public.dim_table' with key '1'
2021-08-16 10:25:30,103 INFO io.debezium.relational.Table - TTL expired on cache entry for table 'public.dim_table' with key '2'
2021-08-16 10:25:30,103 INFO io.debezium.relational.Table - TTL expired on cache entry for table 'public.dim_table' with key '3'
上述日志中,最后三行显示了维表数据被清理的情况,其中每一行都包含了清理的表名和键值。
可能是由于Flink引入的基于TTL的对于过期状态的清理功能导致。这种手动清理程序不仅容易出错,而且效率低下。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。