图形化界面部署ocp启动报错

【 使用环境 】 测试环境
【 OB or 其他组件 】
【 使用版本 】4.2.2
【问题描述】图形化界面部署ocp启动报错,日志如下

SQL: REPLACE INTO ocp_perf_sql_diagnosis_task (task_name, begin_interval_time, end_interval_time, executor, status) VALUES (?, ?, ?, ?, ?)

Cause: java.sql.SQLTransientConnectionException: (conn=3221624527) Table has no partition for value

; (conn=3221624527) Table has no partition for value; nested exception is java.sql.SQLTransientConnectionException: (conn=3221624527) Table has no partition for value
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:70)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
at com.sun.proxy.$Proxy322.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:271)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:152)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)
at com.sun.proxy.$Proxy558.save(Unknown Source)
at com.oceanbase.ocp.perf.sql.diag.internal.access.OcpPerfSqlDiagnosisTaskDbAccessImpl.save(OcpPerfSqlDiagnosisTaskDbAccessImpl.java:25)
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

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

根据您提供的日志信息和问题描述,OCP 在启动时遇到了一个 SQL 执行错误。以下是问题的分析和可能的解决方案:

问题分析

从日志中可以看出,SQL 执行失败的原因是 Table has no partition for value,即表 ocp_perf_sql_diagnosis_task 没有为某个值定义分区。这通常发生在以下场景:

  1. ocp_perf_sql_diagnosis_task 是一个分区表。
  2. 插入数据时,目标分区不存在或未正确配置。

此外,错误发生在 OCP 的性能诊断任务模块 (OcpPerfSqlDiagnosisTaskDbAccessImpl) 中,表明该模块在初始化时尝试向数据库插入一条记录,但由于分区缺失导致失败。


解决方案

1. 检查表结构

请确认表 ocp_perf_sql_diagnosis_task 是否是一个分区表。如果是分区表,请检查其分区定义是否完整。可以通过以下 SQL 查询表的分区信息:

SHOW CREATE TABLE ocp_perf_sql_diagnosis_task;

如果表确实是分区表,但某些分区缺失,请根据业务需求补充分区。例如,如果分区基于时间字段(如 begin_interval_timeend_interval_time),可以添加新的分区:

ALTER TABLE ocp_perf_sql_diagnosis_task ADD PARTITION (
    PARTITION p_new_partition_name VALUES LESS THAN (TO_DAYS('YYYY-MM-DD'))
);

请将 p_new_partition_name 替换为合适的分区名称,并将 YYYY-MM-DD 替换为实际的时间范围。

2. 检查数据插入逻辑

从日志中的 SQL 语句来看,插入的数据可能超出了现有分区的范围。请检查插入数据的值(尤其是 begin_interval_timeend_interval_time),确保它们落在已定义的分区范围内。

3. 更新 OCP 数据库初始化脚本

如果上述问题是由 OCP 数据库初始化脚本遗漏分区导致的,请检查 OCP 的安装文档或升级指南,确认是否有额外的初始化步骤需要执行。例如,某些版本的 OCP 可能需要手动运行特定的 SQL 脚本来完善表结构。

4. 清理异常任务

如果问题无法立即解决,可以尝试清理异常的任务记录以避免阻塞 OCP 启动。具体操作如下:

  • 删除表 ocp_perf_sql_diagnosis_task 中的状态为异常的任务记录:
DELETE FROM ocp_perf_sql_diagnosis_task WHERE status = 'FAILED';
  • 如果问题仍然存在,可以禁用性能诊断任务模块,待问题修复后再重新启用。

其他建议

  1. 检查 OCP 版本兼容性
    确保 OCP 的版本与 OceanBase 数据库版本兼容。根据文档片段 5,OCP-Agent 应与 OCP-Server 保持同版本。如果版本不匹配,可能会导致类似问题。

  2. 收集诊断信息
    如果上述方法无法解决问题,建议使用 obdiag 工具收集诊断信息,并联系 OceanBase 技术支持团队进一步排查。


总结

根据文档库中的信息,问题的根本原因可能是表 ocp_perf_sql_diagnosis_task 的分区定义不完整或数据插入逻辑超出分区范围。建议按照上述步骤逐一排查并修复。如果仍有疑问,请提供更多上下文信息以便进一步分析。

检索到的文档如下:

  1. monitor_exporter_unavaliable 监控 exporter 异常
  2. 用户规划
  3. 磁盘及目录规划
  4. 管理分组
  5. host_agent_version_not_same 主机 OCP-Agent 版本与预期版本不一致
  6. 使用限制
  7. host_unavailable 主机心跳检测失败
  8. 配置自定义监控
  9. 4500 ~ 4999
  10. 查看集群拓扑图

麻烦发一下集群的yaml文件 ~/.obd/cluster/xxx/ 和obd日志 ~/.obd/log/

image
发不出来啊

根据您提供的 OCR 提取的文本内容,问题的原因是文件上传时被系统拒绝,具体原因是文件类型不被允许。以下是详细分析和解决方案:


问题分析

从 OCR 提取的文本中可以看出,系统提示以下信息:

  • 您尝试上传的文件类型不在允许的范围内。
  • 允许的文件扩展名包括:jpg, jpeg, png, gif, heic, heif, webp, zip, rar, 7z, log, doc, docx, pdf, dmg, txt, ts, pkg, gz, xz, mp4

这表明您上传的文件可能具有上述列表之外的扩展名,因此被系统拦截。


解决方案

1. 确认文件类型

请检查您尝试上传的文件的实际扩展名。如果文件扩展名确实不在允许列表中,请考虑以下方法:

  • 转换文件格式:将文件转换为支持的格式(例如,将图片转换为 pngjpeg,文档转换为 pdfdocx)。
  • 重命名文件:如果文件类型本质上是支持的,但扩展名不正确,可以尝试重命名文件以匹配支持的扩展名。例如,将 .log.txt 重命名为 .txt

2. 使用压缩工具

如果文件类型无法直接转换,可以尝试将文件压缩为 ziprar 格式后再上传。压缩文件通常会被允许上传,并且可以在下载后解压查看内容。

3. 联系管理员

如果您确认文件类型应该被允许上传,但仍然遇到限制,请联系系统管理员或技术支持团队,说明情况并请求调整上传策略。


注意事项

  • 确保文件安全:在上传文件之前,请确保文件没有病毒或恶意代码,以免影响系统安全。
  • 遵守平台规则:某些平台可能对文件大小、内容类型有额外限制,请仔细阅读相关说明。

总结

根据文档库中的信息,您的问题是因为上传的文件类型不在允许范围内导致的。建议按照上述步骤检查文件类型并进行相应处理。如果仍有疑问,请提供更多上下文信息以便进一步分析。

详情请参考:

  1. 7000 ~ 7999
  2. SM4_DECRYPT
  3. 遇到问题如何向技术支持同学提问
  4. 4000 ~ 4499
  5. IMPORT_INDEX_STATS
  6. IMPORT_COLUMN_STATS
  7. DELETE_TABLE_STATS
  8. 9000 ~ 9499

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

ocp_config.txt (923 字节)
obd.log (506.7 KB)

你是使用已有的ob集群来作为ocp的Meta集群么。
139节点2886端口已被占用。当前架构是啥样子

日志中存在内存不足问题
[WARN] OBD-2000: (192.168.0.139) not enough memory. (Free: 53.9G, Need: 54.0G)

1 个赞

是使用已有的ob集群来作为ocp的Meta集群,解除了2886的端口,现在启动成功了,部署ocp主要是需要对单机部署的数据库进行监控,希望后续能顺利监控上吧


接管新部署的集群,这个不通过怎么处理

到主机那一栏看一下 idc环境是啥

没看见idc呢


两边不一致,统一改为idc1


换了一个

region不一致,把机型改为sys_region

image
image
修改了还是报这个

删掉主机,重新添加主机,指定和ob集群中记录的idc和region匹配;

或者
修改ob集群中的idc和region信息,参考
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218348

两种都尝试了,还是不匹配

不应该呀,主机列表看一下你的主机的地区和region是啥。

登录你的新ob集群
查询ob集群中记录的idc和region信息:
SELECT * FROM oceanbase.DBA_OB_ZONES;




我也觉得不应该啊,我还重启了一遍ocp