观察tidb 所有节点无写入

【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
由于发版,业务在没有之后

通过什么参数或者指标可以观察tidb 所有节点已经没有业务数据写入了

比如 mysql 可以 show master status 观察没有binlog 在动了 。。tidb 用什么呢

【附件:截图/日志/监控】

select count(*) from INFORMATION_SCHEMA.CLUSTER_PROCESSLIST t
where t.COMMAND<>‘Sleep’

返回值=1就是没有活动的sql了,多查几次

1 个赞

第一个可以看看INFORMATION_SCHEMA.CLUSTER_PROCESSLIST,如果没有连接那肯定没写入了,不过有连接也不一定代表一定就有写入,所以我猜你是想要类似于mysql里show master status看看binlog位点有没有变化来确定有没有写入,不过tidb里show master status是tso,用这个不能确定是否还有写入。我想到的办法一个是直接设置只读,保证集群无法写入,另一个可以看看监控里的ops,看看是否有写入

试试看dashboard的sql语句分析

选5分钟看看没有业务相关sql应该也就没业务了

2 个赞

不能设置只读,就是确保应用都正常写入完。没有写流量在进来

:thinking:我觉得区分不出来,毕竟数据库系统自己也有定时任务在执行。

各节点的qps 啊🤔,这个可以吧

压力小,开下genlog

dashboard上有active connection指标,如果显示0,则表示没有活跃会话了

:+1::+1::+1:这个办法好,这个可以变相监控所有sql了。

送我一朵小红花 :zipper_mouth_face:

一种就是监控<>'Sleep’的连接,用脚本持续监控,还有一种就是打开general_log

general log 是与 MySQL 兼容的功能,开启后能够记录数据库执行的所有 SQL 语句,为问题诊断提供依据。TiDB 也支持此功能,你可以通过设置变量 tidb_general_log 开启该功能。在之前的版本中,general log 的内容只能和其他信息一起写入实例日志中,这对于需要长期保存日志的用户来说并不方便。

从 v8.0.0 开始,你可以通过配置项 log.general-log-file 指定一个文件名,将 general log 单独写入该文件。和实例日志一样,general log 也遵循日志的轮询和保存策略。

也可以看下这个链接: 系统变量 | TiDB 文档中心 (pingcap.com)

查看面板

这个最比较直观吧,只要有颜色就说明有写入了

直接看dashboard sql-statements 吧

流量可视化或者看看连接有没有正在执行的sql


granafa里面就有啊

方法好像很多,看监控,查连接。