生产环境业务表出现异常ID跳变

【 使用环境 】生产环境
【 OB or 其他组件 】4.2.5.1
【 使用版本 】社区版
【问题描述】生产中自增属性为order的表出现ID跳变,目前看没有出现 官网提到的 服务器重启 以及 表切主的情况,是不是还有其它的场景会触发ID跳变

【复现路径】
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

针对您所描述的情况,OceanBase 表现出了自增列(order 属性)ID 跳变的现象,而这种情况在没有服务器重启或表切主的前提下发生,可能是由其他因素引起的。为了更好地定位问题,我们可以使用 obdiag 工具来进行日志采集。

日志采集场景: 内存问题
日志采集命令: obdiag gather scene run --scene=observer.memory

此外,为了进一步排查可能的原因,还请您提供以下信息:

  1. 自增列是否有定义最大值限制?
  2. 是否有手动插入自增列值的操作?
  3. 是否存在大量删除操作,可能导致 ID 回收后再分配时出现跳变?
  4. 系统中是否进行了任何可能导致内存溢出的操作,如大量并发写入?
  5. OceanBase 集群的配置文件中有无特殊设置,例如自增列的增长步长等?
  6. 除上述情况外,是否有任何异常告警或错误日志记录?

请按照提供的命令使用 obdiag 工具进行日志采集,并将采集到的日志提供给我们,以便于我们更准确地分析问题原因。

附上敏捷诊断工具 obdiag 使用帮助链接

2 个赞

分区表,每个节点都会缓存ID。数据落到不同节点,id就会看上去有跳变了

2 个赞

普通表有遇到这种情况吗

普通表有其它触发跳变的场景吗?总出现跳变的话 业务表主键ID 达到 写入上限 会出现 数据写入失败的现象。

很容易就达到上限了?那肯定是手动插入过比较大的值了。

这个倒没有,有时候会出现ID跳跃,但是我们发现发现跳变的时候 表没有达到官网说的触发场景,想知道还有什么场景会触发跳变

你可以看一下 这些场景

场景 ORDER NOORDER
多机多分区生成自增值 不跳变 跳变
INSERT插入指定最大值 不跳变 跳变
replace插入指定最大值 不跳变 跳变
重启/宕机 跳变,仅当leader机器发生时 跳变
切主 跳变 (低于4.2.5) 跳变
1 个赞

我们是4.2.5.1版本的, 没有出现OBServer重启 和 表切主的现象,这个租户设置了primary zone为 单zone,不是random。

你可以看看上面的场景 单zone下有几个observer? 有插入或者replace突变了么?还是其他情况

一个observer,就是普通的insert插入操作,没有插入/replace出现突变的情况

如果插入指定的不是最大的值 也会跳变 这个也是符合预期的

1 个赞