记录一次TDSQL-MySQL数据库主从延迟导致批量报错

背景信息:一个7*24小时的交易系统,采用集中式实例,1主5从。凌晨执行卸数批量时,出现"proxy erroy:no available address"报错。报错的SQL语句中采用了hint语法/*slave:localslave,slaveonly,20*/,表示选择主从延迟小于20s的从库执行sql语句,如果找不到主从延迟小于20s的从库,则报错。

排查思路;

1、查询proxy节点上的interf日志,在报错时间点附近找到了对应的"proxy erroy:no available address"记录,确认报错。

2、检查问题时间点附近慢SQL,未发现大事务,排除大事务造成的主从延迟。

3、结合造成主从延迟的原因+报错信息,可以排除掉长时间未提交事务、锁超时。

4、 查看赤兔binlog增长速率,发现问题时间点附近binlog有突增,再比较interf日志生成时间,发现问题时间点附近短短几分钟内就产生了好几个大小1G的日志,由此,可以确认造成主从延迟的原因为短时间内有大量写入binlog的sql执行。

5、通过proxy日志问题时间段过滤出insert、delete、update语句,发给项目组确认,为另外一个批量发起的SQL。

至此,问题原因以及查明:另外一个批量在短时间内发起大量执行速度很快的insert、delete、update语句,造成了所有从库的主从延迟超过20s,卸数批量SQL语句找不到满足的从库,因而报错。后续整改方案就是卸数批量避开其他批量以及业务高峰期。

相关推荐
小白勇闯网安圈14 小时前
Django 响应对象、文件上传与类视图
数据库·django·sqlite
努力的小雨14 小时前
同一份 SQL 跑多套环境:Ksql 变量怎么用才安全
数据库
科技绘图15 小时前
快鲸GEO vs 传统AI搜索优化:全链路自动化与高效内容生产在转化闭环上的对比
数据库·人工智能·自动化
ltl15 小时前
数据库作为 LLM 记忆体:语义缓存、RAG 与一致性
数据库
ltl15 小时前
WAL 与崩溃恢复:ARIES 协议怎么跑通
数据库
ltl15 小时前
TEE 数据库:EnclaveDB、Oblivious 原语与机密 SQL
数据库
麻瓜code16 小时前
【Mysql】重新学一遍 SQL 执行顺序
数据库·sql
这个DBA有点耶17 小时前
数据库一体机架构演进:从硬件堆叠到软硬深度耦合
服务器·网络·数据库·硬件架构·运维开发·database·数据库架构
一只fish17 小时前
优化器架构对比:Oracle vs PostgreSQL vs MySQL
mysql·postgresql·oracle
安_18 小时前
RAG的向量数据库:为LLM提供语义搜索能力
数据库