OMS,提示未开启归档开关,但是,检查又检查,确实是开启的。

【 使用环境 】生产环境
【 OB or 其他组件 】OMS
【 使用版本 】4.2.7_CE
【问题描述】OMS 预检查
【复现路径】问题出现前后相关操作
1、源端检查提示已开启:

在sys层面开启:

2、OMS预检查截图

3、另外,想确认一下,我理解OMS是基于clog获取增量数据,为何需要检查archerlog?
会从archerlog获取增量日志吗?

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

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

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

6 个赞

日志采集场景: 日志归档问题
日志采集命令: obdiag gather scene run --scene=observer.log_archive

为了更好地帮助您解决 OMS 提示未开启归档开关的问题,建议您使用上述 obdiag 命令进行日志采集,并将采集到的日志提供给我们以便确认问题所在。

针对您提到的几个问题,我们还需要了解一些额外的信息:

  1. 您能否提供具体的租户名称以及该租户的归档状态配置信息?这有助于我们确认租户层面的归档设置是否正确。
  2. 您可以检查一下 OMS 配置中是否有特定于租户的归档设置要求或限制吗?这可以帮助我们理解 OMS 预检查失败的原因。
  3. 您能分享一下 OMS 的版本信息吗?不同版本可能存在不同的行为或要求。
  4. 在您的环境中,OMS 是否确实依赖于 archivelog 来获取增量数据?还是也可以通过其他方式(如 clog)实现?这有助于我们理解为什么 OMS 会检查 archivelog。

关于 OMS 是否基于 clog 获取增量数据以及为何需要检查 archivelog 的问题:

  • OMS 主要用于从 OceanBase 数据库中抽取变更数据。它通常会利用数据库提供的机制来捕获这些变化。在 OceanBase 中,archivelog 是一种重要的机制,用于记录所有对数据库所做的更改,因此 OMS 可能依赖于 archivelog 来确保能够捕捉到所有的变更。
  • 尽管 clog(提交日志)也包含了事务提交的信息,但 archivelog 更适合用于长期存储和恢复目的,因为它包含了更完整的日志记录,可以支持更复杂的恢复场景。所以,即使 OMS 可能会读取 clog 来获取最新的变更信息,但它仍然需要 archivelog 来保证数据的一致性和完整性。

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

6 个赞


https://www.oceanbase.com/docs/community-oms-cn-1000000001880717

开启归档的 准备工作

https://www.oceanbase.com/docs/community-observer-cn-10000000000901781

6 个赞

老师,我确认是开启日志归档的,

但是,OMS就是提示没开启。

6 个赞

根据您提供的信息和文档片段,这里有几个可能的原因导致 OMS 提示日志归档未开启,而实际上您已经确认在 sys 租户中开启了日志归档。我们将逐一分析并提供解决方案。

1. 租户级别的归档设置

  • 问题描述:虽然您在 sys 租户中开启了日志归档,但 OMS 预检查可能会针对具体的用户租户进行检查。
  • 解决方案
    • 确认目标租户(即 OMS 连接的租户)是否也开启了日志归档。

    • 使用以下 SQL 查询来检查特定租户的日志归档状态:

      SELECT * FROM oceanbase.CDB_OB_ARCHIVELOG WHERE TENANT_ID = (SELECT TENANT_ID FROM oceanbase.__all_tenant WHERE TENANT_NAME = 'your_tenant_name');
      
    • 如果目标租户没有开启日志归档,请使用以下命令开启:

      ALTER SYSTEM SET archive_log_start = TRUE;
      

2. OMS 版本兼容性

  • 问题描述:您提到使用的 OMS 版本为 4.2.7_CE,可能存在版本兼容性问题或预检查逻辑差异。
  • 解决方案
    • 检查 OMS 的版本更新日志,确认是否有已知的 bug 或者需要升级到最新版本。
    • 如果有可用的补丁或新版本,请尝试升级 OMS。

3. OMS 配置与连接设置

  • 问题描述:OMS 可能配置了特定的检查条件或连接参数,导致它无法正确识别日志归档状态。
  • 解决方案
    • 检查 OMS 的配置文件和连接设置,确保它们指向正确的租户和数据库实例。
    • 确认 OMS 是否有特定的权限要求或环境变量设置,这些可能影响其对日志归档状态的检测。

4. 日志归档状态同步延迟

  • 问题描述:有时日志归档状态的变化可能不会立即反映在所有节点上,特别是在分布式环境中。
  • 解决方案
    • 等待一段时间后再次检查 OMS 预检查结果,确保状态同步完成。
    • 使用 obdiag 工具收集诊断信息,查看是否有任何延迟或同步问题。

5. 日志归档状态验证

  • 问题描述:确保日志归档确实处于正确的工作状态。
  • 解决方案
    • 使用以下 SQL 查询来验证日志归档的状态,并确保其处于 DOING 状态:

      SELECT STATUS FROM oceanbase.CDB_OB_ARCHIVELOG WHERE TENANT_ID = (SELECT TENANT_ID FROM oceanbase.__all_tenant WHERE TENANT_NAME = 'your_tenant_name');
      
    • 如果状态不是 DOING,请检查是否有任何错误或警告信息,并采取相应措施解决。

总结

为了彻底解决问题,建议您按照上述步骤逐一排查。特别是确认目标租户的日志归档状态和 OMS 的配置与连接设置。如果问题仍然存在,建议使用 obdiag 工具收集详细的诊断信息,并联系 OceanBase 的技术支持团队以获取进一步的帮助。

希望这些建议能帮助您解决问题。如果有更多疑问或需要进一步的帮助,请随时告知。

具体信息可参考以下文档:

  1. 日志归档概述
  2. Coordinator(框架层)
  3. OceanBase 术语
  4. LogProxySource
  5. 如何处理用户密码被锁定的问题
  6. StoreSource
  7. OMS 社区版日志排查

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

6 个赞

归档日志的状态确实不对哟。
但是,ALTER SYSTEM SET archive_log_start = TRUE; 报错“ERROR 5099 (42000): System config unknown”

6 个赞

但是看着归档的状态不对呀 状态应该是doing 看着是没有运行
你登录sys租户 在执行一下这个命令 ALTER SYSTEM ARCHIVELOG TENANT=MYSQL_TENANT;
在检查一下 看看是否哪里配置的有问题 在检查一下这些信息
select * from CDB_OB_ARCHIVE_DEST where tenant_id = 100X;
select * from oceanbase.CDB_OB_ARCHIVELOG where tenant_id = 100X\G;
select * from oceanbase.CDB_OB_LS_LOG_ARCHIVE_PROGRESS where tenant_id = 100X\G;

6 个赞

麻烦老师看看?

6 个赞

麻烦在logs_product租户下按如下步骤开下归档,然后取下日志

ALTER SYSTEM NOARCHIVELOG;
ALTER SYSTEM SET LOG_ARCHIVE_DEST=‘xxx’;
ALTER SYSTEM ARCHIVELOG;

SELECT last_trace_id() FROM DUAL;

grep xxxxxxx observer.log --填写上一步步获取的trace_id
grep xxxxxxx rootservice.log --填写上一步步获取的trace_id

7 个赞

老师,您好,操作记录如下:
1、关闭并开启archived log

2、查看对应日志:

3、检查是否正常开启,已正常开启(status为:doing):

4、检查OMS任务,发现正常:

但是,操作过程中,将之前的archived log清理了。

5、OMS store好像报错了。

6 个赞


按照截图 把libobcdc.log这个日志 提供一下

6 个赞

:+1: :+1: :+1:

3 个赞

你集群部署是不是没直接用ocp,改过的参数不在配置文件中,才在这里显示出来的。

4 个赞

这个问题官方回复的清晰明了

1 个赞

学习了 666