obloader导入失败

obloader -h 192.168.48.107 -P2881 --direct --parallel 4 --rpc-port 2882 -uroot@ERP -p -D simba_tw_hans --sql --allf /root/dbbackup/hans/tw/data/simba_tw_hans/TABLE/handle
进度条卡住
目录中每次放不同的表一张表一张表重试,有的表成功了,有的表失败,如果是目录中放多张表运行到某张有问题的表就会卡住,现在只能筛选找到不成功的表,error日志看到,麻烦帮忙看下

2025-11-05 15:04:46 [ERROR] Fatal error occurred while loading data from “/root/dbbackup/hans/tw/data/simba_tw_hans/TABLE/handle/trade.0.sql” into table simba_tw_hans.trade. Reason: Write into table “trade” failed. com.alipay.oceanbase.rpc.direct_load.exception.ObDirectLoadIllegalStateException: statement cannot write because is fail, state:7, expect:[2, 3]

2025-11-05 15:04:48 [ERROR] Error: Write into table “trade” failed. com.alipay.oceanbase.rpc.direct_load.exception.ObDirectLoadIllegalStateException: statement cannot write because is fail, state:7, expect:[2, 3]

1 个赞

麻烦提供一份完整的日志看下。

日志只有这个消息

logs.zip (27.6 KB)

看着像是.sql文件存在异常


比如随便找一条sql:INSERT INTO trade (tr_id,eid,meid,buyer_id,sid,tid,created,addtime,leftime,paytime,final_payment_time,updtime,modify,signtime,endtime,hash_item,wh_id,buyer,type,lock,ctype,status,third_warehouse_status,sh_id,priority,ship_type,ship_name,ship_when,ship_code,ship_date,package_no,fee_pay,fee_post,fee_discount,fee_point,fee_adjust,fee_original,fee_total,fee_balance,inv_name,inv_text,weight,gp_id,promo,level,task_id,single_brush,reason,abroad,currency,xpromo_id,source_order_code,sku_weight,op_id,has_out_of_stock,new_sign_time) VALUES (1459345,‘14471704855603916370’,‘24471704858130918456’,‘51471704855603937807’,‘6917560171212373799’,‘6917560171212373799’,1704855301,1704855603,0,1704855324,0,1704858109,1704858130,0,0,‘77369c70f8136c36f40eddb2d1b38528’,4,‘詹*’,‘FIX’,‘C’,‘PAY’,‘FAIL’,null,6601,0,‘246’,‘YUNDA’,‘ALL’,‘318818588094162’,0,null,3990.0000000000000000,0.0000000000000000,1000.0000000000000000,0.0000000000000000,0.0000000000000000,3990.0000000000000000,4990.0000000000000000,0.0000000000000000,’’,’’,230,5,‘JU’,1,0,null,27,0,‘CNY’,8292,null,null,null,0,null); 直接insert是没错的

会不会是磁盘性能问题?

不是,之前别的机器安装oceanbase,也执行过obloader也遇到这个问题,当时也提了工单没有下文,这次因为非常需要导入数据,再发帖求答疑下, Write into table “trade” failed. com.alipay.oceanbase.rpc.direct_load.exception.ObDirectLoadIllegalStateException: statement cannot write because is fail, state:7, expect:[2, 3] 这个问题官网都搜不到

有bad文件生成吗,方便提供一下详细日志和数据吗。这边测试复现下看看

昨天排查的确有些sql异常,就是ddl某字段原始null,开始有些数据进来,后来可能改成not null,整表导出,该字段为空的数据再导入就会报错,已经修改ddl解决部分问题。现在有时候遇到就是带旁路导入参数会失败,旁路导入添加--direct --parallel=8 报错,不添加就没问题 - #5,来自 zmix 和这篇差不多问题,那就只能直接导速率较慢但是正常。有的时候导长时间进度条不变,ctrl c中断,后续再启动obloader是不是又从头重新导了?

再启动obloader是会要重新导入

是不是有数据导致的主键冲突什么的。 导入后,obloader 在导入目录有日志文件,有error,bad 等文件,可以参考一下!
同时 obloader 导入目标表有替换,清空参数,可以试一试

麻烦提供一下你带旁路导入参数执行的obloader语句

obloader -h 192.168.48.107 -P2881 -uroot@ERP --direct --parallel 4 --rpc-port 2882 -p -D simba_wms_hans --ddl --sql --al-f /root/dbbackup/wms/data/simba_wms_hans/TABLE/handle

麻烦贴一下报错信息,observer版本是多少

感觉是sql问题。obdumper -h xxx-zhangjiakou.oceanbase.aliyuncs.com -uadmin -P3306 -p --public-cloud -t ** -D simba_tn_hans --table trade --ddl --sql -f hans/tn/ 能不能像mysqldump可以带–where条件

可以。参考官方文档
https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000003972549


obdumper -h xxx-zhangjiakou.oceanbase.aliyuncs.com -uadmin -P3306 -p --public-cloud -t ** -D simba_tn_hans --table trade --where=“addtime >=1759248000” --ddl --sql -f hans/tn/
带上了where条件,只导出了-schema 也就是ddl文件,没有数据文件

你参数里面加了 --ddl参数。再加个–all