前言
运维同事在不知情的情况下,在磐维数据库所在的主机上执行了误操作,导致新安装好的单节点数据库状态异常。由于数据库中暂时还没有数据,所以决定卸载数据库重新安装。
重新安装过程
1、先卸载数据库
# omm用户执行
$ cd /database/panweidb/soft/script
$ gs_uninstall --delete-data
2、重新安装数据库
2.1 预安装数据库
# root用户执行
# ./gs_preinstall -U omm -G dbgrp -X /database/panweidb/soft/cluster_config_template.xml --sep-env-file=/home/omm/.bash_profile
报错如下:
[GAUSS-50219] : Failed to obtain # Source /root/.bashrc if user has one. There are illegal characters in local host.
解决办法:
重新指定环境变量配置文件/home/omm/.panweidb_env
# root用户执行
# ./gs_preinstall -U omm -G dbgrp -X /database/panweidb/cluster_config_template.xml --sep-env-file=/home/omm/.panweidb_env
磐维数据库预安装正常。
2.2 安装数据库
# root用户执行
# chown -R omm:dbgrp /database/panweidb
# chmod -R 755 /database/panweidb
# omm用户执行
$ gs_install -X /database/panweidb/soft/cluster_config_template.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--lc-collate=C" \
--gsinit-parameter="--lc-ctype=C" \
--gsinit-parameter="--dbcompatibility=B"
磐维数据库安装正常。
3、查看数据库状态
# omm用户执行
$ gs_om -t status --detail
刚开始数据库状态是正常的,但是过几分钟后数据库状态异常。
数据库异常时的日志截图如下:

4、分析数据库日志

可以看到,在这个报错后,数据库就被终止了:
2024-08-19 18:24:12.547 66c31d4b.3932 [unknown] 140088896911104 dn_6001 0 dn_6001 42809 0 [BACKEND] FATAL: semop(id=130187529) failed: Identifier removed
分析思路:
难道是内核参数配置有问题?检查了内核参数文件 /etc/sysctl.conf,是正常的。
检查了RemoveIPC,异常。运维同事在第一次安装的时候,RemoveIPC就忘记关闭了。
5、关闭RemoveIPC:
1、 修改/etc/systemd/logind.conf文件中的“RemoveIPC”值为“no”
vim /etc/systemd/logind.conf
RemoveIPC=no
2、修改/usr/lib/systemd/system/systemd-logind.service文件中的“RemoveIPC”值为“no”
vim /usr/lib/systemd/system/systemd-logind.service
RemoveIPC=no #没有参数,添加到末尾
3、 重启服务
systemctl daemon-reload
systemctl restart systemd-logind.service
4、 结果验证确认
loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC
关闭RemoveIPC后,重新拉起数据库,持续观察半小时,数据库状态正常。
原因
在RHEL7.2及之后,systemd-logind 服务引入了一个新特性——当一个user 完全退出os之后,remove掉所有的IPC objects。
该特性由/etc/systemd/logind.conf参数文件中RemoveIPC选项来控制。当使用默认值(即 RemoveIPC=yes)的情况,当用户退出时,操作系统会remove掉该用户的shared memory segments and semaphores。
总结
本次主要是RemoveIPC没有关闭导致的数据库不稳定,启动数据库后几分钟后就crash异常。
再次提醒童鞋们,做运维千万要小心谨慎。另外,只有按照标准文档把前期配置工作的每一项都准备好,数据库安装后才能稳定运行。




