OMS同步问题

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】oms_4.2.7-ce.tar.gz
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

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

目前OMS配置迁移遇到几个问题:

  1. 源端-OceanBase 集群节点连通性检查问题:
    预检查报数据源OCP交互异常,是什么问题导致?OCP可以正常范围,数据源测试也是正常链接状态

  2. 租户日志开启问题:
    执行“alter system set log_archive_dest=‘LOCATION=file:////data/1’; ” 但是会报:“Not Support feature or function”

3.迁移账号为新建的odc账号,登录可以查询对应的源数据库,为什么提示账号下租户sys没有查询权限?

根据您提供的信息,以下是针对您遇到的 OMS 配置迁移问题的具体分析和解答:


问题 1:源端-OceanBase 集群节点连通性检查问题

描述:预检查报数据源OCP交互异常,但OCP可以正常访问,数据源测试也是正常链接状态。

分析与解决:

  • 根据文档片段 2 和 6 的内容,OCP 与 OceanBase 集群之间的连接失败可能由以下原因导致:
    1. 网络问题:尽管 OCP 可以正常访问,但仍可能存在特定端口或链路不通的问题。建议检查 OCP 与 OceanBase 集群之间的网络连通性,特别是 OBServer 节点的监听端口(默认为 2881 或其他自定义端口)。
    2. 账号权限问题:如果 OCP 使用的监控账号(如 ocp_monitor@sys)不存在或权限不足,也可能导致交互异常。请确保该账号存在,并拥有足够的权限。
    3. 集群状态问题:OceanBase 集群中是否存在无主的表或 sys 租户异常?可以通过 OCP 或者直接登录到 OBServer 检查集群状态。

建议排查步骤:

  1. 检查 OCP 与 OceanBase 集群之间的网络连通性,包括防火墙规则、路由配置等。
  2. 确认 OCP 使用的监控账号是否正确,以及其密码是否匹配。
  3. 登录到 OceanBase 集群,执行以下命令检查集群状态:
    SHOW TENANTS;
    SELECT * FROM __all_rootservice_status;
    
  4. 如果问题仍未解决,参考文档片段 4 提供的日志信息,收集 OCP 和 OBServer 的相关日志进行进一步分析。

问题 2:租户日志开启问题

描述:执行 alter system set log_archive_dest='LOCATION=file:////data/1'; 报错“Not Support feature or function”。

分析与解决:

  • 根据文档片段 9 和 OceanBase 社区版的功能限制,log_archive_dest 参数在社区版中并不支持。这是由于社区版的设计目标是提供轻量级的分布式数据库功能,而归档日志功能通常用于企业版中的高可用和灾备场景。
  • 如果需要实现类似的功能,可以考虑以下替代方案:
    1. 使用备份工具:通过 OCP 或 obd 工具定期对租户数据进行备份。
    2. 手动导出日志:将需要保存的日志文件手动复制到指定目录。

建议:

  • 如果您的需求是记录租户的操作日志,可以启用审计日志功能(audit_log),具体操作如下:
    ALTER SYSTEM SET enable_audit_log = true;
    ALTER SYSTEM SET audit_log_file_size = '10M';
    ALTER SYSTEM SET audit_log_expire_time = '7d';
    
  • 如果确实需要归档日志功能,请考虑升级到 OceanBase 企业版。

问题 3:迁移账号为新建的ODC账号,提示账号下租户sys没有查询权限

描述:迁移账号为新建的 ODC 账号,登录可以查询对应的源数据库,但提示账号下租户 sys 没有查询权限。

分析与解决:

  • 根据文档片段 1 和 5 的内容,ODC 账号的权限管理依赖于 OceanBase 数据库中的用户权限设置。如果新建的 ODC 账号没有被正确授权,可能会导致无法查询 sys 租户的数据。
  • 具体原因可能包括:
    1. 账号权限不足:新建的 ODC 账号可能没有被授予对 sys 租户的查询权限。
    2. 租户隔离机制:OceanBase 的多租户架构中,默认情况下不同租户之间是隔离的,普通用户无法跨租户访问数据。

建议排查步骤:

  1. 检查新建 ODC 账号的权限设置,确保其拥有对 sys 租户的查询权限。可以通过以下 SQL 查询权限:
    SELECT * FROM __all_privilege WHERE grantee_id = (SELECT user_id FROM __all_user WHERE user_name = 'your_odc_account');
    
  2. 如果权限不足,可以为该账号授予权限:
    GRANT SELECT ON sys.* TO your_odc_account;
    
  3. 确保 ODC 配置中正确映射了该账号与 sys 租户的关系。参考文档片段 1 中关于 ODC 连接数据源的注意事项。

总结

  1. 连通性问题:可能是网络、账号权限或集群状态问题,建议按照上述步骤逐一排查。
  2. 日志开启问题:社区版不支持 log_archive_dest 参数,建议使用审计日志或其他备份工具替代。
  3. 权限问题:新建 ODC 账号可能未正确授权,需检查并调整权限设置。

如果以上方法仍无法解决问题,建议使用 obdiag 工具收集诊断信息,并联系 OceanBase 官方技术支持团队获取进一步帮助。

详情请参考:

  1. 使用 MySQL 租户做常见数据库开发
  2. ob_cluster_status_check_failed OB 集群状态检测失败
  3. OCP V3.3.0
  4. ODC 故障排查总则
  5. ODC V4.1.1
  6. ob_cannot_connected OB 服务器无法连接
  7. OCP V4.2.1
  8. OCP V3.1.2

1、在oms机器上能否正常登录数据库,并查询信息。
2、部署ocp,通过ocp进行集群备份,备份分为日志备份和数据备份。
3、编辑"odc用户"的数据源,拉到最下方,高级选项中-添加sys租户的账密,测试链接通过即可。

1、检查一下配置的数据源测试一下 是否有问题
2、 日志归档前准备
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013175
3、增量迁移的账号权限有问题 正常情况下 应该是业务租户不应该是sys租户才对