Postgresql无法启动

时间:2012-07-19 14:04:03

标签: python sql postgresql ubuntu

我正在尝试在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。但是,没有日志文件!当我更改默认目录时,有些东西搞砸了。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

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

当你遇到问题时,你是如何开始PostgreSQL的?

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

在Ubuntu上,您需要更改/etc/postgresql中的配置,以告诉脚本数据目录的位置,可能是pg_ctl.confstart.conf的相应版本。我不确定具体细节,因为我从来不需要这样做。这就是原因:

但是,还有更好的方法。使用旧数据库位置到新数据库位置的符号链接。 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,因此新数据库的配置将直接位于数据库中,而不是/etc/postgresql/中。

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