暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

磐维数据库常见问题

涛~ 2024-09-08
581

一、安装部署

1、集中式安装部署

以下列举几个常见容易忽略导致数据库安装失败的原因

1)检查操作系统确定其对应的安装包

2)python3环境-推荐使用yum安装python3

常见报错:


3)检查cpu指令集

  • rdtscp指令集(x86)

    执行lscpu | grep rdtscp命令查看是否支持rdtscp指令集。

  • bmi2指令集(CentOS)

    执行lscpu |grep bmi2命令查看是否支持bmi2指令集。

2、分布式安装部署

问题现象:

安装部署时报错:

{
 "ret":8000301
 "msg":"Transport endpoint unreach"
}

问题排查:

ha日志:


通过以上log判断为etcd服务异常,手动启动etcd报错:

抓取对应的journalctl.log报错信息,定位为权限不足:

解决方法: 其中libcrypto.so.1.0.2k和libssl.s0.1.0.2k应该为755权限,但实际服务器上为750权限,通过以下命令进行授权

chmod 755 /usr/lib64/libssl.s0.1.0.2k
chmod 755 /usr/lib64/libcrypto.so.1.0.2k

授权后,重新安装部署成功,至此问题得到解决

常用命令

  • etcd常用命令:

    --查看etcd服务状态
    etcdctl --endpoints=http://10.xx:2379 ls -r  /service

    --查看etcd成员
    etcdctl --endpoints=http://10.xx:2379 member list

    --查看etcd集群信息
    etcdctl --endpoint http://10.xx:2379 ls /service/omm
  • 集群常用命令:

    --启动集群
    ha_ctl start all -l http://10.xxx:2379

    --停止集群
     ha_ctl stop all -l http://10.xxx:2379

    --查看集群信息
    ha_ctl monitor all -l http://10.xxx:2379 -H

二、license使用

1、Error happen when load license cannot write xxx

WARNING:Error happen when load license cannot write data to dir /etc/panweidb/license.
图片

license目录无license文件或者数据库用户的权限问题

2、The trial has been expired ...

WARNING: The trial has been expired: xxxx, please ask administrator for license`

license文件过期

3、dtp升级到3.0后服务启动失败

问题现象


解决方案

1)对依赖包创建软连接

cd /dtp/deployment/lib/so 

ln -s /dtp/deployment/lib/so/libssl.so /dtp/deployment/lib/so/libssl.so.10

2)重启panwei-dtp

systemctl start panwei_dtp

三、备份恢复-gs_probackup

1. 自定义表空间

  • 备份:使用-E,--external-dirs来指定自定义表空间路径,多个自定义表空间用:隔开

  • 恢复:--tablespace-mapping和--external-mapping

2. 备份超时

问题现象: 执行2min报错

问题原因-t rwtimeout 以秒为单位的连接的超时时间。默认是120s

解决方法:在执行gs_probackup时指定超时时间

3. 归档问题

问题现象: pg_stop_backup doesn't answer in 300 seconds, cancel it


排查思路

1)首先检查归档是否开启show archive_mode;

2)归档路径是否正确show archive_dest;

3)归档路径是否存在

4)归档目录的读写权限

5)检查wal_sender_timeout参数配置是否配置正确

6)确认是否因为备份执行命令未放置后台执行导致超时crontab -e

四、JDBC使用

1、ERROR: relation "xxx" does not exist

业务查询不到表对象,报错如下:

ERROR: relation "xxx" does not exist ..

排查思路:

  • 确认schema - currentSchema

  • 确认该schema下是否存在该表

  • 确认查询的该用户是否有权限查询该表

2、druid连接池,报错:buffer is empty

排查思路:

  • 设置打开keepalive进行连接探活;

  • 数据库参数:session_timeout=0

  • 合理设置 connectTimeout & socketTimeout的值

  • 设置 testOnReturn=off

五、其他常见问题

Q0:cm_ctl start启动失败

排查思路:

1、查状态:当cm_ctl start 启动数据库集群有问题,先gs_om -t status --detail查看集群状态。

2、手动起数据库gs_ctl start -D 数据目录。如果是cmserver正常,数据库状态异常,启动数据库的异常节点。如果两个数据库节点都是down的状态,需要一个启动为主节点,-M primary;一个启动为备节点-M standby。如果主节点状态正常,只需-M standby启动备节点

3、按照启动输出中的报错信息排查问题

Q1:启动失败-Failed to start instance...

[GAUSS-51607]: Failed to start instance. Error: please check the gs_ctl log for failure details

建议根据提示查看gs_ctl日志和数据库日志pg_log进一步确定。(有遇到是由于CPU指令集导致的)

Q2:启动失败-Failed to read gaussdb.state: 0

Failed to read gaussdb.state: 0 Failed to set gaussdb.state with UNKNOWN_STATE

删除gaussdb.state文件或者将该文件size手动改为72,重新启动

Q3:启动失败-data directory xxx has ...

FATAL: data directory xxx has group or world access DETAIL: Permissions should be u=rwx (0700).

数据目录权限问题,需执行:chmod -R 700 数据目录

Q4:启动失败-could not create shared memory segment: No space left on device

FATAL: could not create shared memory segment: No space left on device 
  • kernel.sem=kernel.sem = 250 6400000 1000 25600
  • 根据服务器内存大小调整shared_buffers

Q5:启动失败-the values of memory out of limit...

FATAL: the values of memory out of limit, the database failed to be started

根据服务器内存大小调整数据库的max_process_memoryshared_buffers参数

Q6:cached plan must not change result type

使用过程中业务查询报错:

cached plan must not change result type

原因:业务使用了prepare语句 与 数据库做了DDL操作

规避方法

  • 重启业务程序
  • 杀掉数据库会话连接
  • deallocate the prepare

Q7:大小写问题

  • 大小写相关参数:

    • lower_case_column_names-字段大小写敏感设置
    • lower_case_table_names-表名称大小写敏感设置

Q8:column "bytes_" is of type bytea...

迁移后,JDBC向数据库中BYTEA字段插入数据时报错:

ERROR: column "bytes_" is of type bytea but expression is of type blob

JDBC连接串中的blobMode设置为off

Q9:current_len_left is invalid

全量build失败:

current_len_left is invalid

看主节点的数据目录下是否有core文件,存在的话删除。确保没有大于2GB的大文件,重新build

总结:排查问题主要核心思路是查看相关日志的报错,根据报错去分析问题原因

最后修改时间:2024-09-08 15:15:47
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论