用load data infile从csv往表里导数据,每次导入1717200条数据后就报timeout错误

【 使用环境 】测试环境
【 OB or 其他组件 】observer
【 使用版本 】社区版4.2.1
【问题描述】csv文件数据有一亿两千多万行,用 LOAD DATA /*+ parallel(8) / INFILE ‘/data/aml/new_transactions.csv’ INTO TABLE transactions FIELDS TERMINATED BY ‘,’ IGNORE 1 LINES; 命令往表里导数据,每次都是导入1717200条数据后就报timeout异常
【复现路径】执行命令 LOAD DATA /
+ parallel(8) */ INFILE ‘/data/aml/new_transactions.csv’ INTO TABLE transactions FIELDS TERMINATED BY ‘,’ IGNORE 1 LINES;
【问题现象及影响】timeout异常退出,数据导入任务无法正常完成

【附件】

ob_query_timeout
ob_trx_timeout
这2个超时参数调大点 试试

参数调大了个数量级,还是不行:


系统租户执行 alter system set enable_rich_error_msg=true;

然后业务租户再执行导入sql

报错后会返回节点和trace串

去对应节点 grep trace串 observer.log* >> /tmp/ob_tmp.log

提供下ob_tmp.log

ob_tmp.log (7.3 MB)

ob_query_timeout 设置的是600s,10分钟。日志14:18执行的加载语句,28分钟未执行完成,超时符合预期。建议再调大该超时参数。

如果性能慢 也可以考虑使用ob的导数工具,有一些性能优化。
https://www.oceanbase.com/docs/community-obloaderdumper-cn-1000000000076594
或使用load data旁路导入
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218027

使用旁路导入报server out of space错;但各节点磁盘空间还是有富余

image

image

这是trace log日志,请帮忙看一下:
ob_tmp.log.zip (362.0 KB)

Server out of disk space(msg=“disk is almost full”, ret=-4184, required_size=2097152, required_count=1, free_count=1126, used_percent=90)

数据磁盘满了,可以增大diskfile_size 参数 调整数据磁盘预占用大小。

安装oceanbase的时候data file没有用/data目录,现在/目录只有20G左右空间了,之前已经把datafile_size设置成20G了,有办法把集群各节点的datafile目录调整到/data目录下吗

建议是重装下,目录重新规划,不然后续还会有容量规划问题。而且都在根目录下 数据、redo、日志等会有磁盘io资源争抢问题。

那问一下oceanbase该怎么删除重装呢

方案1:
obd cluster destroy 部署名称 – 销毁集群
obd cluster deploy 部署新名称 -c 部署配置文件 – 重新部署

方案2:
obd cluster edit-config 部署名称 — 编辑当前配置,修改磁盘参数,保存后会提示进行obd cluster redeplay 操作进行重装。

注意:重装会清理数据库数据,请酌情操作。

前面把datafile_size设置成30G后重启了集群,但109节点 的size还是2G,请看一下这个问题:

show parameters like ‘%datafile_size%’; 看下生效的参数值

如果使用方案2:obd cluster edit-config 部署名称,配置文件里怎么配datafile路径

需要提供下109节点的observer.log日志 确认下未生效原因

如果是all-in-one的安装包部署的 可以参考安装包中conf目录下的配置写法
如果是obd rpm包安装的 参看 /usr/obd/example目录下配置文件的写法
配置文件写法是一样的,只是不同方式安装存储路径不一样。

现在用obd cluster edit-config ,加了配置 data_dir: /data/oceanbase_data后,重新生成集群后109 datafile size正常了。
不过用旁路导入时,报错 ERROR 1172 (42000): Result consisted of more than one row