pg_wrapper
首先:您可能会发现使用 Ubuntu 提供的自定义工具(作为: pg_createcluster
、pg_dropcluster
等的一部分)更容易管理您在 Ubuntu 上的 Pg 安装pg_ctlcluster
。这些工具与 Ubuntu 启动脚本集成,并将配置移动到/etc/postgresql/
Ubuntu 喜欢保留的位置,而不是PostgreSQL 默认在 datadir 中。要移动实际文件的存储位置,请使用符号链接(见下文)。
当你遇到问题时,你是如何启动 PostgreSQL 的?
如果您通过pg_ctl
它启动它应该可以正常工作,因为您必须指定数据目录位置。但是,如果您使用的是发行版包脚本,他们不知道您已经移动了数据目录。
在 Ubuntu 上,您需要更改配置/etc/postgresql
以告诉脚本数据目录在哪里,可能pg_ctl.conf
是start.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 集群管理脚本,这会更容易。