鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

使能KAEzip后没有生效

问题现象描述

使能KAEzip后没有生效。

关键过程、根本原因分析

为了让Greenplum服务在启动时能够找到KAEzip库文件的路径,需要在启动前设置好环境变量。通常情况下,Greenplum服务是通过gpstart/gpstop等工具来启动的,这些工具会继承启动脚本或命令执行时的环境变量。因此,在启动Greenplum服务之前,需要确保它能够找到KAEzip库文件的路径。

在安装Greenplum时,用户一般会在“~/.bashrc”或者“~/.bash_profile”中配置环境变量。但是,KAEzip的环境变量则需要在“~/.bashrc”中添加。这样才能保证启动Greenplum服务时,它能够找到所需的KAEzip库文件的路径,从而正常运行。

结论、解决方案及效果

  • 方法一(推荐):在Greenplum的配置文件“~/.bashrc”中添加KAEzip库文件的路径。
    1. 停止Greenplum的服务。
      1
      gpstop
      
    2. 修改Greenplum的配置文件中的环境变量。
      1. 打开文件。
        1
        vim ~/.bashrc
        
      2. “i”进入编辑模式,在配置文件最后添加如下语句。
        1
        export LD_LIBRARY_PATH=/usr/local/kaezip/lib:$LD_LIBRARY_PATH
        
      3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
      4. 使修改生效。
        1
        source ~/.bashrc
        
        如果Greenplum的环境变量配置在.bash_profile文件中,则需要执行如下命令使上述修改生效。
        1
        source ~/.bash_profile
        
    3. 重新启动Greenplum。
      1
      gpstart
      

    当不需要使用KAEzip时,可以将上述添加的语句注释掉,重新使环境变量生效并重启数据库。否则可能导致其他操作出现问题。

  • 方法二:直接替换动态库文件。
    1. 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”),说明复制成功。

    2. 重启数据库。

    当不需要使用KAEzip时,可以恢复1中被备份的“/lib64/libz.so.1.2.11”文件,并重启数据库。否则可能导致其他操作出现问题。

    1
    mv /lib64/libz.so.1.2.11-bak /lib64/libz.so.1.2.11