Postgresql启动失败



我正在尝试在Ubuntu上使用PostgreSQL。我安装了它,一切都很好。然而,由于空间限制,我需要更改数据库的位置,所以我尝试了一个在线指南

我继续停止postgresql,创建一个新的空目录,并使用授予它权限

chown postgres:postgres /my/dir/path

这也很好。然后我用

initdb -D /my/dir/path

以启用我的数据库。我还将postgresql.conf文件中的path_data更改为我的新目录。

当我现在尝试启动数据库时,它显示:The postgresql server failed to start, please check the log file。但是,没有日志文件!当我更改默认目录时,出现了一些问题。我该如何解决这个问题?

首先:使用Ubuntu作为pg_wrapper的一部分提供的自定义工具:pg_createclusterpg_dropclusterpg_ctlcluster等,你可能会发现在Ubuntu上管理你的Pg安装更容易。这些工具与Ubuntu启动脚本集成,并将配置移到Ubuntu喜欢保留的/etc/postgresql/,而不是PostgreSQL默认的datadir中。要移动实际文件的存储位置,请使用符号链接(见下文)。

当你遇到问题时,你是如何启动PostgreSQL的?

如果您通过pg_ctl启动它,它应该可以正常工作,因为您必须指定数据目录的位置。不过,如果您使用的是发行版软件包脚本,他们并不知道您已经移动了数据目录。

在Ubuntu上,您需要更改/etc/postgresql中的配置,以告诉脚本数据目录在哪里,对于合适的版本,可能是pg_ctl.confstart.conf。我不确定具体细节,因为我从来没有需要这样做。这就是为什么:

不过,还有更好的方法。使用从旧datadir位置到新datadir位置的符号链接。PostgreSQL和安装脚本将很乐意遵循它,您不必更改任何配置。

cd /var/lib/postgresql/9.1/main
mv main main.old
ln -s /new/datadir/location main

我猜"9.1"是因为你没有给出你的Ubuntu版本或PostgreSQL版本。

另一种选择是使用mount -o bind将新的datadir位置映射到旧的位置,这样就不会注意到差异。然后将绑定装载添加到/etc/fstab,使其在重新启动时保持不变。只有当其中一个工具不喜欢符号链接方法时,才需要这样做。我认为这不会是pg_wrapper等的问题

您还应该注意,由于您手动使用了initdb,新的datadir将直接在datadir中进行配置,而不是在/etc/postgresql/中。

如果你只是使用Ubuntu集群管理脚本,那就容易多了。

最新更新