oms 结构迁移任务失败

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】 ob:4.3.1.0 oms:4.2.5_CE
【问题描述】oms 数据迁移任务失败
【复现路径】oms 配置数据源,然后新建迁移任务,任务启动后失败报错:tenant is marked non-null but is null
【附件及日志】错误码:

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

1 个赞

根据您提供的信息,错误信息显示 tenant is marked non-null but is null,这表明在执行预检查时,系统期望租户 ID(Tenant ID)存在且非空,但实际上却未设置或为空。该错误通常发生在配置数据源时没有正确指定租户 ID。以下是可能的解决方案:

  1. 检查数据源配置:确保在配置数据源时指定了正确的租户 ID。在 OMS 中添加数据源时,需要填写数据库连接信息,其中包括租户 ID。请确认这一字段是否被正确填写。[[@1]]

  2. 验证连接字符串:从您提供的图片信息来看,连接字符串为 jdbcoceanbase://192.168.30.133:2883,这里缺少了租户 ID 的部分。标准的连接字符串格式应包含租户 ID,例如 jdbc:oceanbase://192.168.30.133:2883/<tenant_name>,请确保在实际使用时包含了 <tenant_name> 部分。[[@2]]

  3. 联系技术支持:如果以上步骤均无法解决问题,建议联系 OceanBase 的技术支持团队获取进一步的帮助。根据错误信息提示,“缺少错误文案描述”,这意味着该错误可能是由于系统内部逻辑问题导致的,需要由专业人员进行排查。

综上所述,请先按照上述建议检查您的配置,并尝试重新启动迁移任务。如果问题依旧存在,请及时寻求官方支持。

1 个赞

数据源配置 有问题 数据源配置截图看看

1 个赞

配置数据源的时候如果填入 sys 租户,就会提示不支持 sys 租户,这个看上去进入死胡同了

1 个赞

配置的时候写入租户会报错

1 个赞

根据您提供的信息,当尝试配置数据源时,填写 sys 租户会收到错误提示 Sys tenant is not supported.。这表明 OMS 不支持使用 sys 租户作为数据源。这是因为在 OceanBase 中,sys 租户通常是系统租户,主要用于集群管理和内部操作,而不适合用于业务操作或数据迁移任务。

解决方案

  1. 创建用户租户
    • 您应该创建一个用户租户,并使用该租户来进行数据迁移任务。这样可以避免使用 sys 租户带来的限制和潜在问题。

    • 您可以通过 OBD 或者 SQL 语句来创建用户租户。具体方法如下:

    • 使用 OBD 创建用户租户

      obd cluster tenant create <deploy name> [-n <tenant name>] [flags]
      # 示例
      obd cluster tenant create test -n obmysql --max-cpu=2 --memory-size=2G --log-disk-size=3G --max-iops=10000 --iops-weight=2 --unit-num=1 --charset=utf8
      
    • 通过 SQL 创建用户租户

      CREATE TENANT obmysql MAX_CPU 2 MEMORY_SIZE '2G' LOG_DISK_SIZE '3G' MAX_IOPS 10000 IOPS_WEIGHT 2 UNIT_NUM 1 STORAGE_MIN_ROWSTORE_BLOCK_SIZE 16K STORAGE_MAX_ROWSTORE_BLOCK_SIZE 128K STORAGE_BLOOM_FILTER_TYPE 'row' STORAGE_COMPRESSION 'lz4' STORAGE_TABLET_CACHE_SIZE '1G' STORAGE_LOG_REPLAY_THREADS 2 STORAGE_LOG_REPLAY_QUEUE_SIZE 1024 STORAGE_LOG_REPLAY_TIMEOUT 300 STORAGE_LOG_REPLAY_RETRY_INTERVAL 10 STORAGE_LOG_REPLAY_RETRY_TIMES 10 STORAGE_LOG_REPLAY_RETRY_BACKOFF 10 STORAGE_LOG_REPLAY_RETRY_BACKOFF_MAX 10 STORAGE_LOG_REPLAY_RETRY_BACKOFF_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES_MAX 1 STORAGE_LOG_REPLAY_RETRY_BACKOFF_JITTER_MAX_GROWTH_TIMES_GROWTH_MAX_TIMES_GROWTH_MAX_TIMES
      
      

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

  1. CREATE STANDBY TENANT
  2. 租户内存写满
  3. 备租户转为主租户
  4. 常见内存问题
  5. 设置日志恢复源
  6. 使用命令行部署 OceanBase 数据库生产环境
  7. 创建备租户前准备

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

2 个赞

我想问一下 你配置租户名 为什么要配置sys租户 迁移数据 基本上都是业务租户 才合理呀

1 个赞

我问了相关的同学 这里是不支持sys租户的 有限制的

1 个赞

尬住了啊,源数据库是在 sys 租户下,我配其他租户读不到要迁移的库

1 个赞

业务数据不要放在sys租户下,好多地方都有这个限制。

1 个赞

业务数据 放到sys租户下 有很多限制 目前oms不支持sys租户下迁移的 你们后期搭建的ob的话 要重新建业务租户的

2 个赞

sys租户确实有限制,可以先用OBDUMPER把数据导出来先,然后用OBLOADER导入。。黑屏操作其实也还好 :joy: