CentOS7下利用tmpfiles.d解决PostgreSQL9.6重启后目录丢失问题的配置咨询
回答:是的,这个配置完全可以解决你的问题
你计划在/etc/tmpfiles.d/var.conf中添加的d /var/run/postgresql 0755 postgres postgres配置,正好命中了CentOS7下PostgreSQL9.6重启后目录丢失的问题根源,能完美解决启动失败的状况。
为什么这个配置能生效?
CentOS7基于systemd,而/var/run是/run的软链接——/run是内存挂载的tmpfs文件系统,系统重启后会被彻底清空,这就是每次重启后/var/run/postgresql消失的原因。
systemd的tmpfiles.d机制专门用来处理这类临时资源:它会在系统启动阶段、或者通过手动命令触发时,自动重建指定的目录/文件。你的配置每一项都精准对应需求:
d:声明要创建的是目录/var/run/postgresql:目标路径,就是PostgreSQL依赖的那个临时目录0755:目录权限,保证postgres用户能读写操作,其他用户可正常进入postgres postgres:设置目录的属主和属组,和PostgreSQL的运行用户完全匹配
快速验证配置是否有效
你可以手动模拟一次重启后的场景来测试:
- 先删除现有目录:
rm -rf /var/run/postgresql - 执行systemd的tmpfiles创建命令:
systemd-tmpfiles --create - 检查目录是否重建成功:
正常情况下会输出权限为ls -ld /var/run/postgresqldrwxr-xr-x、属主属组均为postgres的目录信息。
额外小提示
如果你的系统开启了SELinux,偶尔可能会出现目录上下文不正确的情况,这时可以执行restorecon -Rv /var/run/postgresql来修复上下文权限,确保PostgreSQL能正常访问。
内容的提问来源于stack exchange,提问作者robie yogiansyah
相关产品推荐
相关产品推荐

