在greenplum环境中,使用gpconfig 配置集群参数,偶现错误semctl error: Invalid argument
直接上图
出现此报错时,还会导致数据库进入恢复(recovery)模式。
根本原因
系统参数RemoveIPC被设置为yes,导致的。
参数说明及分析
RemoveIPC控制用户完全注销时是否应删除属于该用户的System V和POSIX IPC对象,取值为布尔。
该参数在RHEL7.2及之后引入,默认为yes。
因为postgres 数据库使用了共享内存,所以当此参数设置为yes时,在某些场景下(操作系统用户退出登录时),会导致postgres 的共享内存异常,进而引起一系列其他异常问题。
解决方案
在/etc/systemd/logind.conf中修改此参数 RemoveIPC=no
重启操作系统或重启 systemd-logind:
systemctl restart systemd-logind.service
验证
loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC
备注
对于数据库系统服务来说(pg、oracle等),如果使用RHEL7.2以上版本,可能都会存在此问题,而导致数据库工作异常,需要作为通用参数,在部署数据库服务前进行修改。