案例说明:
在KingbaseES V8R6集群部署了postgis后,执行sys_monitor.sh start启动集群时,出现动态库错误,如下图所示:
适用版本:
KingbaseES V8R6
操作系统:
Kylin V10 Server
一、问题分析
1、手工执行sys_ctl启动数据库服务,启动正常。
2、执行sh -x sys_monitor.sh start查看脚本启动过程:
---如上所示,在启动脚本时,awk工具出现动态库链接错。
3、查看正常的awk的动态库链接
[kingbase@node101 bin]$ ldd awk
linux-vdso.so.1 => (0x00007ffea8f86000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb9abcc7000)
libm.so.6 => /lib64/libm.so.6 (0x00007fb9ab9c5000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb9ab5f7000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb9abecb000)
---如上所示,awk是系统工具,正常的动态库链接文件应该在/lib64目录下
4、查看故障主机awk动态库链接(kingbase用户查看)
---如上所示,动态库libreadline.so.2链接目录指向了数据库软件所带的动态库文件。
5、查看系统kingbase用户LD_LIBRARY_PATH变量配置
---如上图所示,动态库文件优先从数据库软件目录下访问库文件,导致awk调用了错误的动态库。
二、问题解决
1、编辑kingbase用户LD_LIBRARY_PATH变量
export LD_LIBRARY_PATH=/lib64:/opt/Kingbase/ES/V8/Server/lib: $ LD_LIBRARY_PATH
2、应用变量配置
source .bashrc
3、重启sshd服务,重新执行sys_monitor.sh start启动集群,启动正常。
三、总结
对于数据库运行环境,当出现动态库故障时,很多和用户 LD_LIBRARY_PATH变量的配置有关,在分析问题时,可以优先从 LD_LIBRARY_PATH配置来处理和解决问题。