环境

系统平台:UOS(鲲鹏)
版本:4.5.8

症状

  • 环境信息

    数据库:4.5.8+hac4.2.1

    操作系统:UOS1060e、UOS1070e

  • 问题现象

    数据库单机,数据库归档进程正常;hac集群启动数据库,数据库归档报错;归档命令:cp %p /path/archive/%f

1.数据库csv文件报错

致命错误,XX000,归档命令执行失败,退出代码为127","执行失败的归档命令是:/usr/bin/cp pg_wal/000000220000008E000

2.数据库log文件报错

/usr/bin/cp: /opt/highgo/hgdb-see-4.5.8/lib/libselinux.so.1: no version information available (reguired by /usr/bin/cp)
/usr/bin/cp:relocation error: /usr/bin/cp: symbol write_audit_log version LIBSELINUX_1.0 not defined in file libselinux.so.1 with link time reference

问题原因

数据库使用服务器cp命令归档,使用hac集群服务启动时,cp命令依赖的libselinux.so.1与此操作系统存在不兼容的地方。

  • 排查思路

1、调整归档命令,ldd /usr/bin/cp命令用于查看cp 命令的动态链接库依赖关系。

alter system set archive_command = 'ldd /usr/bin/cp >> /tmp/archive_env.log';
select pg_reload_conf();

2、触发归档命令

select pg_switch_wal();
select pg_switch_wal();

3、调整回原生产环境使用的归档命令

alter system set archive_command = '/usr/bin/cp %p /data/highgo/hg_bak/archive/%f';
select pg_reload_conf();

4、查看cp命令依赖输出

cat  /tmp/archive_env.log
......
`/usr/bin/cp: /usr/local/hghac/hac/hghac/_internal/libselinux.so.1: no version information available (required by /usr/bin/cp)
......

警告信息表明 cp命令在运行时发现了一个版本不匹配的共享库。

解决方案

  • 方案一:

当前版本的hac,删除服务文件调用hac打包的libselinux.so.1的配置,重命名libselinux.so.1文件,使其调用操作系统自带的;

cd /usr/local/hghac/hac/hghac/_internal
mv libselinux.so.1 libselinux.so.1.bak

  • 方案二:

升级hac版本,4.2.3.3版本已经解决此问题;

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐