OceanBase的obdumper导出和obloader导入遇到的坑

obdumper导出和obloader导入命令

./obdumper -h 172.16.0.1 -P 2881 -u root  -D xxx --all --ddl  -f outputdir

./obloader -h 172.16.0.1 -P 2881 -u root  -D xxx_new --all --ddl  -f outputdir

-all为导出所有已支持的数据库对象定义和表数据,再同时配合-ddl为仅导出据库对象定义,具体参数参看官方:
https://www.oceanbase.com/docs/community-obloaderdumper-cn-10000000001767714

问题1、执行obdumper时,提示权限不够。

OceanBase的obdumper导出和obloader导入遇到的坑_第1张图片
解决办法:
原因是脚本没有执行权限,对脚本+x添加执行权限。
另外由于是执行脚本,要加上./

chmod +x obdumper
chmod +x obloader

问题2、提示JAVA环境变量未设置

The JAVA_HOME environment variable is NOT defined correctly as the \"$JAVA_HOME/bin/java\" is not found

解决办法:

(1)、先安装JAVA
参考https://blog.csdn.net/m0_61035257/article/details/125705400

(2)、设置环境变量
A 定位JDK安装路径

1. 终端输入:

which java
输出为:

/usr/bin/java
2. 终端输入:

ls -lr /usr/bin/java
输出为:

/usr/bin/java -> 

3. 终端输入

ls -lrt /etc/alternatives/java
输出:

/etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/bin/java

至此,我们确定java的安装目录为: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64

B 配置JAVA_HOME

1. 打开配置环境变量的文件

vi /etc/profile
2. 添加以下配置:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/bin/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
:wq保存退出。

3. 让配置生效

source  /etc/profile
4. 测试配置结果

echo $JAVA_HOME

参考http://www.taodudu.cc/news/show-1607066.html
另外要注意,要在路径后加上/jre,因为脚本直接用了/bin/java,这个在路径的/jre/bin/java上。

问题3:执行obdumper脚本时提示No memory or reach tenant memory limit

OceanBase的obdumper导出和obloader导入遇到的坑_第2张图片
解决方案:这个问题很奇怪,在windows执行脚本正常导出,在linux下执行就报内存不足,经官方指导,大概意思是线程过少时,会导致单个线程使用内存过多。需要在客户端设置增加工作线程。默认是5,调成30就好了。

set global ob_sql_work_area_percentage=30; -- Default 5

参考官方FAQ:https://www.oceanbase.com/docs/enterprise-oceanbase-dumper-loader-cn-10000000001142226

问题4、obloader导入时,提示没有找到库

Retry 1 times to get direct connection, ignore it. Cause: (conn=-1073478981) Unknown database 'xxx_new'

解决方案:
要先建库才到导入,这样有点问题,咨询了官方没有导入时默认建库的参数,只能手动建。

CREATE DATABASE xxx_new

你可能感兴趣的:(数据库,oceanbase,java,linux)