我们最近将数据库的数据目录移动到了新硬盘,因为旧硬盘已满。
我需要清理一些空间以便安装一些东西,所以我删除了旧的数据目录。
现在 postgres 不再启动,大概是因为我删除了postgresql.config
暂无日志/var/log/postgres/...
。
我们复制到新硬盘的数据目录不包含 postgresql.conf,但我不知道为什么。
尽管文件夹有 21GB,但删除旧数据目录也没有释放任何空间,因此我无法使用它initdb
来创建新配置并将其指向新的数据目录,因为磁盘已满。
有什么方法可以让系统恢复运行吗?如果这很重要的话,我们正在使用 postgres 12。
答案1
如果文件不存在,Postgres 确实会拒绝启动postgresql.conf
,尽管我也不确定为什么你的数据目录不包含该文件。你确定你没有意外删除它吗?
无论如何,您的 Postgres 包应该附带示例配置文件,包括一个postgresql.conf.sample
。如果您使用默认选项从源代码构建它,则可以在目录中找到它/usr/local/pgsql/share
。Arch Linux 包管理器安装将这些“与体系结构无关的支持文件”放在/usr/share/postgresql
目录中(这是pg_config
实用程序对它们的称呼)。
pg_config
您可以通过查询带有选项的实用程序来查看您的特定安装配置为将它们放在何处--sharedir
。服务器不需要运行,我暂时重命名了自己的postgresql.conf
文件以查看是否仍然可以查询pg_config
,并且我可以,所以我不知道这对您来说是否是一个可行的选择,很遗憾,对此深表歉意。
为了真正能够创建配置文件并初始化邮政总局守护程序,您是否尝试运行lsof +L1 | grep deleted
以查看是否有任何活动进程仍然保留对旧数据目录的引用?这 总是 似乎 到取消链接 inode(即删除文件/文件夹)实际上并没有释放相应的空间时,就会出现问题。