使能KAEzip后没有生效
问题现象描述
使能KAEzip后没有生效。
关键过程、根本原因分析
为了让Greenplum服务在启动时能够找到KAEzip库文件的路径,需要在启动前设置好环境变量。通常情况下,Greenplum服务是通过gpstart/gpstop等工具来启动的,这些工具会继承启动脚本或命令执行时的环境变量。因此,在启动Greenplum服务之前,需要确保它能够找到KAEzip库文件的路径。
在安装Greenplum时,用户一般会在“~/.bashrc”或者“~/.bash_profile”中配置环境变量。但是,KAEzip的环境变量则需要在“~/.bashrc”中添加。这样才能保证启动Greenplum服务时,它能够找到所需的KAEzip库文件的路径,从而正常运行。
结论、解决方案及效果
- 方法一(推荐):在Greenplum的配置文件“~/.bashrc”中添加KAEzip库文件的路径。
- 停止Greenplum的服务。
1
gpstop
- 修改Greenplum的配置文件中的环境变量。
- 打开文件。
1
vim ~/.bashrc
- 按“i”进入编辑模式,在配置文件最后添加如下语句。
1
export LD_LIBRARY_PATH=/usr/local/kaezip/lib:$LD_LIBRARY_PATH
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 使修改生效。
1
source ~/.bashrc
如果Greenplum的环境变量配置在.bash_profile文件中,则需要执行如下命令使上述修改生效。1
source ~/.bash_profile
- 打开文件。
- 重新启动Greenplum。
1
gpstart
当不需要使用KAEzip时,可以将上述添加的语句注释掉,重新使环境变量生效并重启数据库。否则可能导致其他操作出现问题。
- 停止Greenplum的服务。
- 方法二:直接替换动态库文件。
- Greenplum运行时,会默认到“/lib64”中去找KAEzip的库文件,因此可以先备份“/lib64/libz.so.1.2.11”文件,再将“/usr/local/kaezip/lib/libz.so.1.2.1”文件复制到“/lib64/”目录下即可。
1 2 3 4
mv /lib64/libz.so.1.2.11 /lib64/libz.so.1.2.11-bak cp -r /usr/local/kaezip/lib/libz.so.1.2.11 /lib64/ ldd /lib64/libz.so.1.2.11 ldd /lib64/libz.so.1
如果“/lib64/libz.so.1.2.11”和“/lib64/libz.so.1”的依赖项中有libkaezip.so文件(路径为“/usr/local/kaezip/lib/libkaezip.so”),说明复制成功。
- 重启数据库。
当不需要使用KAEzip时,可以恢复1中被备份的“/lib64/libz.so.1.2.11”文件,并重启数据库。否则可能导致其他操作出现问题。
1
mv /lib64/libz.so.1.2.11-bak /lib64/libz.so.1.2.11
- Greenplum运行时,会默认到“/lib64”中去找KAEzip的库文件,因此可以先备份“/lib64/libz.so.1.2.11”文件,再将“/usr/local/kaezip/lib/libz.so.1.2.1”文件复制到“/lib64/”目录下即可。
父主题: 故障排除