obloader报错 [ERROR] Error occurred when loading data into "xxx"."xxx" java.net.SocketException: Connection reset

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】ob_dumper_loader
【 使用版本 】4.0
【问题现象及影响】
2023-03-03 12:58:23 [WARN] Retry Table: “xxx”, Partition: 0. Records: 25. Error: Connection reset. Retry Mode: BATCH.
2023-03-03 12:58:23 [ERROR] Error occurred when loading data into “xxx”.“xxx” java.net.SocketException: Connection reset
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115) ~[?:1.8.0_121]
at java.net.SocketOutputStream.write(SocketOutputStream.java:155) ~[?:1.8.0_121]
at com.oceanbase.jdbc.internal.io.output.StandardPacketOutputStream.flushBuffer(StandardPacketOutputStream.java:135) ~[oceanbase-client-2.2.11.jar:?]
at com.oceanbase.jdbc.internal.io.output.AbstractPacketOutputStream.write(AbstractPacketOutputStream.java:522) ~[oceanbase-client-2.2.11.jar:?]
at com.oceanbase.jdbc.internal.io.output.AbstractPacketOutputStream.write(AbstractPacketOutputStream.java:485) ~[oceanbase-client-2.2.11.jar:?]
at com.oceanbase.jdbc.internal.com.send.parameters.StringParameter.writeBinary(StringParameter.java:179) ~[oceanbase-client-2.2.11.jar:?]
at com.oceanbase.jdbc.internal.com.send.ComStmtExecute.send(ComStmtExecute.java:158) ~[oceanbase-client-2.2.11.jar:?]
at com.oceanbase.jdbc.internal.protocol.AbstractQueryProtocol.executePreparedQuery(AbstractQueryProtocol.java:479) ~[oceanbase-client-2.2.11.jar:?]
at com.oceanbase.jdbc.JDBC4ServerPreparedStatement.executeInternal(JDBC4ServerPreparedStatement.java:799) ~[oceanbase-client-2.2.11.jar:?]
at com.oceanbase.jdbc.JDBC4ServerPreparedStatement.execute(JDBC4ServerPreparedStatement.java:778) ~[oceanbase-client-2.2.11.jar:?]
at com.oceanbase.jdbc.JDBC4ServerPreparedStatement.executeUpdate(JDBC4ServerPreparedStatement.java:767) ~[oceanbase-client-2.2.11.jar:?]
at com.oceanbase.tools.loaddump.dumper.writer.rdb.DatabaseWriter$RetryCallback.executeUpdate(DatabaseWriter.java:800) ~[ob-loader-dumper-4.0.0-RELEASE.jar:?]
at com.oceanbase.tools.loaddump.dumper.writer.rdb.DatabaseWriter$RetryCallback.call(DatabaseWriter.java:592) ~[ob-loader-dumper-4.0.0-RELEASE.jar:?]
at com.oceanbase.tools.loaddump.dumper.writer.rdb.DatabaseWriter$RetryCallback.call(DatabaseWriter.java:490) ~[ob-loader-dumper-4.0.0-RELEASE.jar:?]
at com.github.rholder.retry.AttemptTimeLimiters$NoAttemptTimeLimit.call(AttemptTimeLimiters.java:78) ~[guava-retrying-2.0.0.jar:?]
at com.github.rholder.retry.Retryer.call(Retryer.java:160) ~[guava-retrying-2.0.0.jar:?]
at com.oceanbase.tools.loaddump.dumper.writer.rdb.DatabaseWriter.onEvent(DatabaseWriter.java:358) ~[ob-loader-dumper-4.0.0-RELEASE.jar:?]
at com.oceanbase.tools.loaddump.dumper.writer.rdb.DatabaseWriter.onEvent(DatabaseWriter.java:83) ~[ob-loader-dumper-4.0.0-RELEASE.jar:?]
at com.lmax.disruptor.WorkProcessor.run(WorkProcessor.java:143) ~[disruptor-3.4.4.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[?:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) ~[?:1.8.0_121]

看起来是断连了 这个应该会重试吧

目前是没有重试的,任务直接失败了

提供下对应的操作吧

obloader -hxxx -uroot -P3306 -pxxx --sys-user=root --sys-password=xxx -c 集群名 -t 租户名 -D 库名 --table ‘test_image’ --sql --truncate-table -f OB-dbatest–20230303125245

方便提供下对应的表结构吗

@linda357aa 你好,请问是导入大字段的场景吗?是的话可以尝试如下解决方案:
1.关闭 _ob_enable_prepared_statement 这个参数;
2.直连数据库导入

字段不是特别大,存的是图片解析后的内容
正常source执行文件是问题的,可以导入

@linda357aa 不是特别大的字段有超过16MB吗?我们已知的是超过16MB需要关闭 _ob_enable_prepared_statement 否则proxy会断连抛错

统计了,没有超过

@linda357aa 那需要看下proxy的日志,分析是什么触发的断连,再以此调整具体的参数项以绕开