1.Base基础/3.Icon图标/操作/search备份
1.Base基础/3.Icon图标/操作/search备份
EN
文档
AntDB简介
快速入门
用户手册
数据安全
系统架构
最佳实践
  • 文档首页 /
  • 参考指南 /
  • 常见问题FAQ /
  • AntDB 常见问题解答

AntDB 常见问题解答

更新时间:2024-04-16 15:42:02

rpm: relocations must begin with a /

解决方式

在使用antdb提供的rpm包安装程序时, 若不指定安装路径,则默认安装在/opt/app/adb(或/opt/app/antdb)目录。 但客户一般都要求安装至指定目录,那么可以使用rpm命令提供的relocate选项, 将默认安装路径调整至指定目录。 (以/data/sy/adb40sy/adb指定目录为例)

sudo rpm -ivh adb-7.2.9ff827a8-10.el7.centos.x86_64.rpm --relocate=/opt/app/adb=$ADB_HOME
注:relocate和后面的配置之间,不要有空格。若存在空格,则抛出标题所示的错误信息

原因说明

relocate和value之间不要添加空格。


LOG: invalid value for parameter "max_stack_depth": 16384

解决方式

登录服务器,修改/etc/security/limits.conf,增加用户的栈深度大小: (以antdb用户为例)

antdb soft stack unlimited
antdb hard stack unlimited

原因说明

一个数据库进程在运行时的STACK所占的最大安全深度。若发现不能正常运行一个复杂的递归操作或一个复杂函数,建议适当提高该配置的值。


ERROR: unrecognized configuration parameter "shared_buffers"

解决方式

登录adbmgr,执行下述命令:

flush param;

原因说明

部分场景下,由于adbmgr的param信息未被初始化,手工执行上述命令初始化之后,再set参数即可。


error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory

解决方式

.bashrc 环境变量中,是否设置了如下环境变量LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$ADB_HOME/lib:$LD_LIBRARY_PATH

原因说明

某些特殊软件或插件,只识别.bashrc而不识别 .bash_profile,添加后退出终端重新登录。


Authentication failed (username/password)

解决方式

各主机之间是否配置了互信。 或在命令后添加 password'xxxx'选项。 下面给出一个示例说明:

postgres=# start agent all;
 hostname | status |                description                
----------+--------+-------------------------------------------
 antdb01  | f      | Authentication failed (username/password)
 antdb02  | f      | Authentication failed (username/password)
(2 rows)

postgres=# 
postgres=# start agent all password'123';
 hostname | status | description 
----------+--------+-------------
 antdb01  | t      | success
 antdb02  | t      | success
(2 rows)

原因说明

AntDB的mgr通过ssh远程管理各节点,因此需配置ssh互信或添加password选项。


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等

原因说明

按上述方式调整配置。

libpqwalreceiver.so: undefined symbol: PQconninfo

在slave上可能会出现这个报错。 原因是在主机上安装了操作系统镜像中的postgresql 相关RPM包,与AntDB的有冲突。

解决方式

卸载操作系统镜像中的 postgresql 相关RPM包:

sudo rpm -e postgrsql*

unable to exchange encryption keys

集群版本中启动agent的时候,可能会出现这个报错,原因是:libssh2的版本过低,可通过升级libssh2版本解决。

可以通过源码编译安装 libssh2 : - 下载地址:https://www.libssh2.org/,备份地址:http://120.55.76.224/files/libssh2/ - 源码编译安装(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版本:

#include <stdio.h>
#include <libssh2.h>

int main ()
{
    printf("libssh2 version: %s\n", LIBSSH2_VERSION );
}

保存为 : check_libssh2.c

编译: gcc check_libssh2.c -o check_libssh2 执行: ./check_libssh2 预期的输出为:

libssh2 version: 1.9.0

问题反馈