• 记-flink sink to pg卡住且日志没有报错问题排查【参数引起】


    记-flink sink to pg卡住且日志没有报错问题排查

    参数:reWriteBatchedInserts=true
    参数说明如下:
    在这里插入图片描述
    问题描述:
    1、flink 任务实时写入kafka和pg , 观察flink DAG图发现写入pg库有压力
    2、任务跑了几分钟后,source 端数据已经持续几分钟不变化
    3、checkpoint 经常失败,特殊情况会成功一次,但之后的checkpoint 基本都是失败,且source 端数据不在变化【尽管source数据还没跑完】
    4、从成功的checkpoint重启任务,source 端数据不在变化【尽管source数据还没跑完】

    排查流程:
    1、查看数据库日志落后情况

    数据库日志落点一点,但不影响任务跑数
    
    • 1

    2、查看表是否死锁

    出现AccessShareLock、RowExclusiveLock 锁, 初步判断是表死锁【锁冲突】了
    
    • 1

    3、排查是否有对应的sql执行日志

    没有找到对应sql执行日志【DBA不在】
    
    • 1

    4、不做checkpoint , 排除checkpoint问题,只考虑sql问题

    任务任不能正常运行
    
    • 1

    5、是否新加了什么参数

    1、最近加了参数:reWriteBatchedInserts=true,但还没全流程验证
    2、去掉参数重启任务,任务正常,问题解决
    
    • 1
    • 2

    原因分析【个人理解】
    1、因业务数据是可以随便删除与写入,实时任务随时回撤数据的可能性
    2、flink sink to pg 本身已经做了reWriteBatchedInserts=true参数的功能,若再次对写入pg设置这个参数,因业务修改问题可能会出现操作数据重叠问题,导致表出现死锁【锁冲突】。

    查询AAAAAA表执行的sql

    SELECT * FROM pg_stat_activity where query ~ 'AAAAAA';
    
    • 1

    查询AAAAAA对应的锁类型

    select 
    a.locktype, a.database, a.pid, a.mode, a.relation, b.relname
    from pg_locks a
    join pg_class b on a.relation = b.oid
    where lower(b.relname) = 'AAAAAA';
    
    • 1
    • 2
    • 3
    • 4
    • 5

    kill 进程:

    select pg_terminate_backend(pid)
    from pg_stat_activity
    where state = 'active'
    and pid != pg_backend_pid()
    --and pid = 14172
    and pid in (select a.pid
    from pg_locks a
    join pg_class b on a.relation = b.oid
    where lower(b.relname) = 'AAAAAA')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    pg 库锁类型
    在这里插入图片描述
    【备注】锁类型引用:http://t.zoukankan.com/zluckiy-p-12486838.html

  • 相关阅读:
    如何导出数据库数据字典
    2022-10-20 解决vue项目中不能使用scss的问题:sass-loader的安装
    java计算机毕业设计基于安卓Android的学生个人支出管理APP
    如何选择最适合您需求的数据恢复工具?适用于 Windows 的 7 大数据恢复工具
    C语言实现通讯录 (附完整代码)
    ky10 server x86 安装、更新openssl3.1.4(在线编译安装、离线安装)
    Androidstudio修改注释颜色
    Navicat 与清华大学校企合作交流会圆满落幕
    智慧机场数字孪生大屏升级智慧出行全方位服务
    Android之SpannableString使用
  • 原文地址:https://blog.csdn.net/a123147abc/article/details/125432968