flink cdc postgre sql ,每次重启就会报这个错误,然后换一个soltname 又好了?Cannot obtain valid replication slot 'test1' for plugin 'pgoutput' and database 'crmdb' [during attempt 21 out of 900, concurrent tx probably blocks taking snapshot.
可能是由于 PostgreSQL 的 listen/notify 机制导致的。
PostgreSQL 的 listen/notify 机制允许后台进程在数据库发生变更时发送通知,这可以用于实现实时数据订阅。
Flink CDC 使用 PostgreSQL 的 listen/notify 机制来监听数据库的变更,并将变更转发给 Flink 集群。
每次重启 Flink 集群时,都会创建一个新的 Flink 任务来监听数据库的变更。
由于 PostgreSQL 的 listen/notify 机制只能由一个后台进程使用,因此新的 Flink 任务会阻塞旧的 Flink 任务,导致旧的 Flink 任务无法正常运行。
解决这个问题的方法是,在 Flink 集群启动之前,先停止 PostgreSQL 的 listen/notify 机制。
可以使用以下命令停止 PostgreSQL 的 listen/notify 机制:
SELECT pg_notify_channel_drop(channel_name);
其中 channel_name 是 PostgreSQL 的 listen/notify 机制使用的通道名称。
在停止 PostgreSQL 的 listen/notify 机制之后,再次启动 Flink 集群,问题应该就解决了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。