升级校验报错

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】升级校验报错,校验显示多个replicas unsync please check,
【复现路径】问题出现前后相关操作
【附件及日志】 如何知道同步进度

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

日志采集场景: 主备库延迟
日志采集命令: obdiag gather scene run --scene=observer.delay_of_primary_and_backup

为了更好地帮助您解决OceanBase升级校验失败以及查看副本同步进度的问题,建议使用上述obdiag命令进行日志采集。此命令可以帮助我们收集有关主备库之间延迟的信息,进而分析多个副本未同步的原因。

请您提供一些额外信息以便我们更准确地定位问题:

  1. 当前集群的版本信息,是从哪个版本升级到哪个版本?
  2. 副本未同步的具体错误日志或提示信息内容是什么?
  3. 集群中各个节点的硬件配置情况如何?
  4. 是否在升级前对数据进行了备份?如果有,请简述备份的方式和结果。
  5. 升级过程中是否有过中断或其他异常情况发生?

另外,对于查看同步进度,您可以登录到OceanBase的管理界面或者使用SQL查询相关系统表来获取副本同步的状态信息。如果您需要具体的SQL语句或者其他操作指导,请随时告知。

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

需要具体的sql语句

根据文档库中的信息,您可以使用以下 SQL 语句来检查副本同步状态和主备库延迟情况:

1. 检查副本同步状态

您可以通过查询 __all_tablet__all_virtual_clog_stat 系统表来获取副本的同步状态。以下是具体的 SQL 语句:

-- 查询所有 tablet 的同步状态
SELECT tablet_id, replica_type, role, last_replayed_scn, last_replayed_ls_id 
FROM __all_tablet 
WHERE tenant_id = 1001 -- 替换为您的租户 ID
ORDER BY tablet_id;

-- 查询 clog(提交日志)的同步状态
SELECT ls_id, member_list, last_submit_scn, last_replayed_scn 
FROM __all_virtual_clog_stat 
WHERE tenant_id = 1001 -- 替换为您的租户 ID
ORDER BY ls_id;

说明

  • replica_type 表示副本类型(如全量副本、增量副本等)。
  • role 表示当前副本的角色(Leader 或 Follower)。
  • last_replayed_scn 是最后回放的日志 SCN(系统更改号),用于判断同步进度。

如果某些副本的 last_replayed_scn 明显落后于 Leader 副本,则可能存在同步延迟。


2. 检查主备库延迟

如果您正在运行主备架构,可以查询主备库之间的延迟情况:

-- 查询主备库延迟
SELECT * 
FROM oceanbase.__all_zone 
WHERE zone_role != 'LEADER' AND tenant_id = 1001 -- 替换为您的租户 ID
ORDER BY zone;

说明

  • zone_role 表示分区角色(如 LEADER、FOLLOWER)。
  • 如果某个分区的 sync_status 不是 IN_SYNC,则表示该分区存在同步问题。

3. 检查本地ity任务

根据 OCR 提取的信息,提示中有 [1 locality tasks is doing, please check],这表明有未完成的 locality 调整任务。您可以查询以下系统表来查看 locality 调整的状态:

-- 查询 locality 调整任务
SELECT task_id, status, start_time, finish_time 
FROM __all_rootservice_event_history 
WHERE event = 'LOCALITY_TASK' 
ORDER BY start_time DESC LIMIT 10;

说明

  • status 表示任务状态(如 RUNNING、FINISHED、FAILED)。
  • 如果任务状态为 RUNNING,则 locality 调整正在进行中。

4. 综合分析

如果上述查询结果显示某些副本未同步或存在延迟,您可以结合以下步骤进行排查:

  1. 检查网络连接是否正常,确保主备节点之间没有网络延迟或中断。
  2. 查看是否有大事务导致同步延迟。
  3. 使用 obdiag 工具进一步采集日志,定位具体问题。

希望以上 SQL 语句和建议能帮助您解决问题!如果仍有疑问,请提供更多上下文信息,我们将尽力为您解答。

更多信息请查看:

  1. SQL 语句概述
  2. 客户端编程语言
  3. 快速参数化
  4. SAVEPOINT
  5. SUBMIT JOB
  6. PREPARE
  7. 执行计划管理
  8. 插入数据
  9. 手动统计信息收集
  10. SQL 基础操作(MySQL 模式)

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

提供一下升级的步骤 信息不全 没有办法看
版本号没有 是哪个产品升级 具体是通过什么升级的没有说明

observe 4.2.5.1 升级到4.2.5.2, 目前是执行升级前校验脚本

稍等


执行升级校验脚本

你把整个报错信息 贴到文本里 发一下 看着是脚本无法执行报错

upgrade_check.txt (8.6 KB)
每次执行,显示的副本都不同26 replicas unsync, please check

ob是社区版的么?

是的

我记得官网没有这个升级方式检查呀 集群是通过什么工具部署的

ocp

建议ocp升级

这个是升级校验脚本,不是升级脚本,其他集群升级前我们也跑了这个脚本,没有报错,就是这个集群也报错

看着像租户的运维任务没有完成呢。。ocp上有没有失败的任务?


有执行失败的任务影响吗

有影响啊,把这些任务都会滚了吧