【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】 ob:4.3.1.0 oms:4.2.5_CE
【问题描述】oms 数据迁移任务失败
【复现路径】oms 配置数据源,然后新建迁移任务,任务启动后失败报错:tenant is marked non-null but is null
【附件及日志】错误码:
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】 ob:4.3.1.0 oms:4.2.5_CE
【问题描述】oms 数据迁移任务失败
【复现路径】oms 配置数据源,然后新建迁移任务,任务启动后失败报错:tenant is marked non-null but is null
【附件及日志】错误码:
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
根据您提供的信息,错误信息显示 tenant is marked non-null but is null
,这表明在执行预检查时,系统期望租户 ID(Tenant ID)存在且非空,但实际上却未设置或为空。该错误通常发生在配置数据源时没有正确指定租户 ID。以下是可能的解决方案:
检查数据源配置:确保在配置数据源时指定了正确的租户 ID。在 OMS 中添加数据源时,需要填写数据库连接信息,其中包括租户 ID。请确认这一字段是否被正确填写。[[@1]]
验证连接字符串:从您提供的图片信息来看,连接字符串为 jdbcoceanbase://192.168.30.133:2883
,这里缺少了租户 ID 的部分。标准的连接字符串格式应包含租户 ID,例如 jdbc:oceanbase://192.168.30.133:2883/<tenant_name>
,请确保在实际使用时包含了 <tenant_name>
部分。[[@2]]
联系技术支持:如果以上步骤均无法解决问题,建议联系 OceanBase 的技术支持团队获取进一步的帮助。根据错误信息提示,“缺少错误文案描述”,这意味着该错误可能是由于系统内部逻辑问题导致的,需要由专业人员进行排查。
综上所述,请先按照上述建议检查您的配置,并尝试重新启动迁移任务。如果问题依旧存在,请及时寻求官方支持。
数据源配置 有问题 数据源配置截图看看
配置数据源的时候如果填入 sys 租户,就会提示不支持 sys 租户,这个看上去进入死胡同了
根据您提供的信息,当尝试配置数据源时,填写 sys
租户会收到错误提示 Sys tenant is not supported.
。这表明 OMS 不支持使用 sys
租户作为数据源。这是因为在 OceanBase 中,sys
租户通常是系统租户,主要用于集群管理和内部操作,而不适合用于业务操作或数据迁移任务。
您应该创建一个用户租户,并使用该租户来进行数据迁移任务。这样可以避免使用 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
具体信息可参考以下文档:
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
我想问一下 你配置租户名 为什么要配置sys租户 迁移数据 基本上都是业务租户 才合理呀
我问了相关的同学 这里是不支持sys租户的 有限制的
尬住了啊,源数据库是在 sys 租户下,我配其他租户读不到要迁移的库
业务数据不要放在sys租户下,好多地方都有这个限制。
业务数据 放到sys租户下 有很多限制 目前oms不支持sys租户下迁移的 你们后期搭建的ob的话 要重新建业务租户的
sys租户确实有限制,可以先用OBDUMPER把数据导出来先,然后用OBLOADER导入。。黑屏操作其实也还好