Flink CDC 连接 postgresql 遇到的问题

参考

Postgres CDC Connector

Flink-cdc实时读postgresql

flink cdc捕获postgresql数据

版本:Flink 1.13.6、Flink CDC 2.1.0、Postgresql 10

需要更改 postgresql.conf

# 更改wal日志方式为logical
wal_level = logical            # minimal, replica, or logical
# 更改solts最大数量(默认值为10),flink-cdc默认一张表占用一个
slotsmax_replication_slots = 20           # max number of replication slots
# 更改wal发送最大进程数(默认值为10),这个值和上面的solts设置一样
max_wal_senders = 20    # max number of walsender processes
# 中断那些停止活动超过指定毫秒数的复制连接,可以适当设置大一点(默认60s)
wal_sender_timeout = 180s	# in milliseconds; 0 disable

Flink CDC 连接 postgresql 遇到的问题

  1. 错误: 无法访问文件 “decoderbufs”: 没有那个文件或目录:Flink CDC 集成了 debezium,debezium 从 postgresql 采集数据需要 decoderbufs 插件支持,所以要在 postgresql 上安装 decoderbufs。

    这个需要下载源码手动编译,同时需要依赖 Protobuf、Protobuf-c、PostGIS 才能编译。

    由于我 yum 不能安装,只能手动编译:Postgre SQL-decoderbufs配置方法(相当麻烦)

    https://github.com/debezium/postgres-decoderbufs

  2. IDE 访问 pg 报错:cannot access com.google.protobuf.GeneratedMessageV3需要在 pom 文件添加依赖

  3. flink-cdc 可以查询 pg 数据,但不能捕捉更新数据需要ALTER TABLE xxx REPLICA IDENTITY FULL;

  4. org.postgresql.util.PSQLException: 错误: replication slot 正用于 PID 28817:需要指定 slot.name(默认为 flink),Flink CDC 默认一张表占用一个 slot。多个未指定 slot.name 的连接会产生冲突。

  5. 致命错误: 所要求的备用服务器连接数超过了参数max_wal_senders的值(当前设置为10):当前连接数超过 max_wal_senders。需要在 postgresql.conf 增大 max_wal_senders

    postgres=# select pid, usename, application_name, backend_type, backend_start from pg_stat_activity;
      pid  | usename  |              application_name               |    backend_type     |         backend_start         
    -------+----------+---------------------------------------------+---------------------+-------------------------------
     20889 |          |                                             | autovacuum launcher | 2022-04-02 10:31:44.623142+08
     20891 | postgres |                                             | background worker   | 2022-04-02 10:31:44.624378+08
     65726 | postgres | psql                                        | client backend      | 2022-04-08 10:02:44.980358+08
     49334 | hxp      | PostgreSQL JDBC Driver                      | client backend      | 2022-04-06 11:01:00.868736+08
     49349 | hxp      | PostgreSQL JDBC Driver                      | walsender           | 2022-04-06 11:01:01.345935+08
     21140 | hxp      | DBeaver 21.2.3 - Main <big_data_public>     | client backend      | 2022-04-02 10:33:36.912172+08
     21141 | hxp      | DBeaver 21.2.3 - Metadata <big_data_public> | client backend      | 2022-04-02 10:33:36.9758+08
     20887 |          |                                             | background writer   | 2022-04-02 10:31:44.61592+08
     20886 |          |                                             | checkpointer        | 2022-04-02 10:31:44.610283+08
     20888 |          |                                             | walwriter           | 2022-04-02 10:31:44.616197+08
    (10 行记录)
    
  6. org.postgresql.util.PSQLException: 错误: 所有的复制槽都在使用中:槽数量超过 max_replication_slots(默认是 10)。需要在 postgresql.conf 增大 max_replication_slots。或者删除不需要的槽:SELECT pg_drop_replication_slot('xxx');

    postgres=# SELECT * FROM pg_replication_slots;
        slot_name     |   plugin    | slot_type |
    ------------------+-------------+-----------+
     decoderbufs_demo | decoderbufs | logical   |
     flink            | decoderbufs | logical   |
     xxx              | decoderbufs | logical   |
     a                | decoderbufs | logical   |
     b                | decoderbufs | logical   |
     c                | decoderbufs | logical   |
     d                | decoderbufs | logical   |
     e1               | decoderbufs | logical   |
     f                | decoderbufs | logical   |
     g                | decoderbufs | logical   |
    (10 行记录)
    

    为什么将 PostgreSQL 用作源的 AWS DMS 任务因所有复制槽均在使用中而失败?

    postgresql之replication slot

    postgresql replication slots 的一些个人理解

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值