新建的表一会有一会没有

【 TiDB 使用环境】生产环境
【 TiDB 版本】v5.4.1
【复现路径】做过哪些操作出现的问题
新创建两个表,过两天使用的时候发现有时可用,有时提示表不存在
【遇到的问题:问题现象及影响】

确定并没有删除操作。
将tidb节点滚动重启一遍之后,就没在出现了。很奇怪
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

是不是有2个集群啊,或者升级过

不,就是同一个集群。重启三个tidb节点之后就好了

是从4.0.14升级过。但是已经好久了

现在是一直存在了?原来admin show ddl jobs中这两个create语句的状态确定是synced状态吗?如果只是done状态的话,就是只有一个tidb节点操作完成,未同步到其他tidb节点,可能会出现你说的情况,有时连到的是执行ddl操作的tidb节点,就会有这个表,连接到未同步节点的话,就看不到这个表。

上面第三个图,两张表的create都是synced。正式使用这两张表是在30号

而且表里面是有写入过数据的

用的是同一个用户访问吗?
能复现吗?

root用户,不同机器,代码里都有复现。我滚动重启了tidb之后就没有了,复现不了了

:yum:上次有同学出现这个情况,还是因为上游同步或定时作业同步定时删除。

2 个赞
  1. 应用程序用的root用户?
    你查查mysql.user 里,用户名为root的用户有几个?
    select user,host from mysql.user where user=‘root’;
  2. 看看这个表有没有删除的记录
    admin show ddl jobs;


只有一个root用户


并没有删除记录噢

这个库并没有上游数据库

把报错信息发上来看下

一种是手动mysql client链接,结果就是图1图2
另一种就是代码报错

Error 1146 (42S02): Table 'payment.payment' doesn't exist

图1和图2执行的时候,tidb server重启了吗?
图3是在tidb server重启前还是重启后执行的?
mysql client和数据库之间有没有用haproxy?

三张图都是在tidb server重启之前的。

有proxysql, 但是我绕过proxysql直连tidb也是会出现的。

这类报错信息第一次以及最后一次的时间点是什么时候?发日志

只有一条日志,是第一条也是最后一条,其余都是mysql client 复现的。

{"level":"error","ts":"2023-08-30T15:55:50.141+0800","gid":"74796","caller":"log.go:55","service.id":"payment","service.name":"payment","service.version":"v2.0.1","trace_id":"fd6e3a4d4","span_id":"371d2e957","duration":0.00585836,"rows":0,"SQL":"SELECT `state` FROM `payment` WHERE account_id = 96134974 AND id = 13264266204568 ORDER BY `payment`.`id` LIMIT 1","err":"Error 1146 (42S02): Table 'payment.payment' doesn't exist",

这个表的建表语句能发下吗?业务相关部分可以打码