load data导入json数据失败

【 使用环境 】生产环境 or 测试环境
测试环境
【 OB or 其他组件 】
OB
【 使用版本 】

obclient(root@(none))[test]> select version();
+------------------------------+
| version()                    |
+------------------------------+
| 5.7.25-OceanBase_CE-v4.3.5.3 |
+------------------------------+
1 row in set (0.000 sec)

【问题描述】清晰明确描述问题
表结构:

obclient(root@(none))[test]> show create table bluesky \G
*************************** 1. row ***************************
       Table: bluesky
Create Table: CREATE TABLE `bluesky` (
  `data` json DEFAULT NULL
) ORGANIZATION INDEX DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE ENABLE_MACRO_BLOCK_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0
1 row in set (0.002 sec)

使用load data导入json数据,报错:

obclient(root@(none))[test]> LOAD DATA /*+ PARALLEL(2) */ LOCAL INFILE '/root/data/bluesky/file_0001.json' INTO TABLE bluesky FIELDS TERMINATED BY '\n' LINES TERMINATED BY '\n' (data);
ERROR 2013 (HY000): Lost connection to MySQL server during query

日志提示:

[2025-09-27 16:14:29.674016] ERROR [SERVER] deliver_mysql_request (ob_srv_deliver.cpp:870) [17540][MysqlUnix][T0][Y0-0000000000000000-0-0] [lt=13][errcode=-4019] deliver mysql request to tenant: 1 queue failed, the queue is full. [suggestion] check T1_L0_G0 thread stack to see which procedure is taking too long or is blocked or check __all_virtual_thread view.

T1_L0_G0 线程状态:

obclient(root@(none))[test]> select count(*) from oceanbase.__all_virtual_thread where tname = 'T1_L0_G0' limit 100;
+----------+
| count(*) |
+----------+
|       82 |
+----------+
1 row in set (0.003 sec)

T1_L0_G0大部分处于Wait状态,只有一个处于local retry ,然后trace_id 为:YB42C0A89980-00063FCA9B9B4AD4-0-0。

使用的是sys租户,租户的unit为:

obclient(root@(none))[(none)]> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE UNIT_CONFIG_ID='1' \G
*************************** 1. row ***************************
      UNIT_CONFIG_ID: 1
                NAME: sys_unit_config
         CREATE_TIME: 2025-09-14 21:47:07.638365
         MODIFY_TIME: 2025-09-27 17:58:27.760171
             MAX_CPU: 8
             MIN_CPU: 8
         MEMORY_SIZE: 10073741824
       LOG_DISK_SIZE: 10147483648
      DATA_DISK_SIZE: NULL
            MAX_IOPS: 9223372036854775807
            MIN_IOPS: 9223372036854775807
         IOPS_WEIGHT: 3
   MAX_NET_BANDWIDTH: 9223372036854775807
NET_BANDWIDTH_WEIGHT: 3
1 row in set (0.002 sec)

导入的json数据为:

【复现路径】问题出现前后相关操作
见上

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

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

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

2 个赞

推荐使用 obdiag 工具进行根因分析和日志采集,并且将采集到的日志提供给我们以便确认问题所在。

根因分析场景: 事务其他错误
根因分析命令: obdiag rca run --scene=transaction_other_error

日志采集场景: SQL执行出错
日志采集命令: obdiag gather scene run --scene=observer.sql_err --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dbluesky’, trace_id=‘Yxx’}”

请您提供一些信息以便我们更好地帮助您:

  1. 能否提供更多关于错误代码 2013 和 -4019 的详细错误信息?
  2. 负载数据时,具体使用的是哪种导入方式?例如,是否使用了特定的参数或配置文件?
  3. 您能否分享一下您的 OceanBase 集群配置信息,包括但不限于硬件配置、集群规模等?
  4. 在发生问题前后,是否有进行过任何维护操作或环境变更?
  5. 是否有定期监控线程队列的状态?如果有,能否提供相关的监控数据?如果没有,可以考虑开启相关监控来进一步分析问题。

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

1 个赞

参考了这篇帖子:重启 OBServer 报错:-4019,deliver request failed-OceanBase数据库使用指南。但是没有详细的解决方式

还有一个queue_size,但不确定是不是与这个错误有关:

2 个赞

看报错是租户队列满,队列满 一般是通过重启observer解决,然后再扩容资源,你这里load data是向sys租户导入数据吗?

另外这个log_disk_size配置不合理,log_disk_size一般要配置为memory_size的3~4倍

1 个赞

是的

学习了

创建一个业务租户吧,不要给sys租户导数据