安装部署常见问题
本章主要就软件安装部署过程中经常出现的报错进行解答。用户遇到问题时,可以先进行搜索。
安装报错
error: library 'crypto' is required for OpenSSL
原因说明:
在安装 AntDB 时,需要一些系统的依赖包。如出现类似错误说明 AntDB 依赖包未安装。
解决方式:
按上述方式以 root 用户安装即可。
yum install openssl openssl-devel
完整的依赖包如下:
yum install perl-ExtUtils-Embed flex bison readline-devel zlib-devel openssl-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel libssh2-devel
参数问题
LOG: invalid value for parameter "max_stack_depth": 16384
原因说明:
一个数据库进程在运行时的 STACK 所占的最大安全深度。若发现不能正常运行一个复杂的递归操作或一个复杂函数,建议适当提高该配置的值。
解决方式:
登录服务器,修改 /etc/security/limits.conf,增加用户的栈深度大小(以 antdb 用户为例):
antdb soft stack unlimited
antdb hard stack unlimited
ERROR: unrecognized configuration parameter "shared_buffers"
原因说明:
部分场景下,由于 adbmgr 的 param 信息未被初始化,手工执行上述命令初始化之后,再 set 参数即可。
解决方式:
登录 adbmgr,执行下述命令:
flush param;
FATAL: could not create shared memory segment: Cannot allocate memory
原因说明:
shared_buffer 设置不合理,超出了 kernel.shmmax 的系统配置。
解决方式:
建议减小 shared_buffer 值,或增大内核参数,如 shmall、shmmax 值。如果设置超大,大过内存值,则直接报错 Invalid argument。
FATAL: invalid value for parameter "shared_buffers": "222222GB" HINT: Value exceeds integer range.
FATAL: could not create semaphores: No space left on device
原因说明:
max_connections 设置不合理,超出了 kernel.sem 的系统配置。max_connections 是最大连接数,即允许客户端连接的最大连接数,增大连接可以允许接入更多的客户端,但设置过大同样会造成 DB 启动失败 semget 是获取信号的一个函数,即 get semaphore。上述的空间不够不是指的是磁盘空间不够,而是创建 semaphores 时空间参数不够,系统调用参数 semget 报错。
解决方式:
减小 max_connections,或者增大内核参数,如 semmni、semmns 等。
登录报错
error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
原因说明:
某些特殊软件或插件,只识别 .bashrc 而不识别 .bash_profile,添加后退出终端重新登录。
解决方式:
.bashrc 环境变量中,是否设置了如下环境变量 LD_LIBRARY_PATH。
export LD_LIBRARY_PATH=$ADB_HOME/lib:$LD_LIBRARY_PATH
Authentication failed (username/password)
原因说明:
AntDB 的 mgr 通过 ssh 远程管理各节点,因此需配置 ssh 互信或添加 password 选项。
解决方式:
各主机之间是否配置了互信。或在命令后添加 password'xxxx' 选项。 下面给出一个示例说明:
antdb=# start agent all;
hostname | status | description
----------+--------+-------------------------------------------
antdb01 | f | Authentication failed (username/password)
antdb02 | f | Authentication failed (username/password)
(2 rows)
antdb=#
antdb=# start agent all password'123';
hostname | status | description
----------+--------+-------------
antdb01 | t | success
antdb02 | t | success
(2 rows)
unable to exchange encryption keys
原因说明:
集群版本中启动 agent 的时候,可能会出现这个报错。原因可能是 libssh2 的版本过低,可通过升级 libssh2 版本解决。
解决方式:
可以通过源码编译安装 libssh2:
步骤 1:下载地址:https://www.libssh2.org/
步骤 2:源码编译安装(root 执行)
wget https://www.libssh2.org/download/libssh2-1.9.0.tar.gz
tar xzvf libssh2-1.9.0.tar.gz
cd libssh2-1.9.0
./configure
make
make install
这里提供一个 C 代码检查 libssh2 版本,保存为 check_libssh2.c;
#include <stdio.h>
#include <libssh2.h>
int main ()
{
printf("libssh2 version: %s\n", LIBSSH2_VERSION );
}
编译:
gcc check_libssh2.c -o check_libssh2
执行:
./check_libssh2
预期的输出为:
libssh2 version: 1.9.0
安装部署的配置文件格式出错
原因说明:
拷贝安装部署的 tar 包过程中,可能会因为系统问题,将 tar 包中的配置文件的格式自动转换成 DOS 格式,此时需要利用 dos2unix 命令手动将 DOS 格式的文本文件转换成 UNIX 格式。
解决方式:
使用 dos2unix 命令手动将 DOS 格式的文本文件转换成 UNIX 格式。
例如:在 antdb-t-ee-release-7.2.generic.* 下对 setup/common/initconf-c.ini
执行格式转换:
dos2unix setup/common/initconf-c.ini