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

如果性能慢 也可以考虑使用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

这是旁路导入错误的trace log,请看一下:
ob_tmp.log.7z (359.5 KB)

需要检查下数据源 是否分隔符有冲突。 确保按逗号分隔使每行数据个数和表字段数是一样的。

这个new_accounts.csv 之前用常规的load data infile命令导入成功过的

encounter too big row size error,maybe local mutator buf is for optimization(ret=-5199

调整 ob_sql_work_area_percentage 参数为20 看下

或者分批导入

最后用obloader工具将csv数据导入了数据库;只是中间过程会有异常 No memory or reach tenant memory limit 导致部分数据丢失,试了3,4次都是这样

set global ob_sql_work_area_percentage=30; – Default 5

可以调大sql工作区占比。