2

我正在尝试在 Ubuntu 上使用 PostgreSQL。我安装了它,一切正常。但是,由于空间限制,我需要更改数据库的位置,因此我尝试了在线指南来进行操作。

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

chown postgres:postgres /my/dir/path

那也很好用。然后我用

initdb -D /my/dir/path

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

当我现在尝试启动数据库时,它说:The postgresql server failed to start, please check the log file. 但是,没有日志文件!当我更改默认目录时,有些事情搞砸了。我该如何解决?

4

1 回答 1

4

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

当你遇到问题时,你是如何启动 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将您的新数据目录位置映射到旧位置,因此没有注意到差异。然后添加绑定挂载以/etc/fstab使其在重新启动后保持不变。如果其中一个工具不喜欢符号链接方法,您只需要这样做。我认为这不会是pg_wrapper等问题。

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

如果您只使用 Ubuntu 集群管理脚本,这会更容易。

于 2012-07-20T02:07:24.270 回答