【问题标题】:Postgresql failed to startPostgresql 启动失败
【发布时间】:2012-07-19 14:04:03
【问题描述】:

我正在尝试在 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 和 PostgreSQL 版本,以及任何错误消息的确切文本。
  • 您对这个问题的回答很差,因为它缺少最低限度的合理信息量。 “在线指南”?哪一个。链接到它。当你说你编辑了postgresql.conf - 那个文件在哪里? /etc/postgresql/ ?你的数据目录?当您“尝试启动数据库”时 - 使用 which exact command ?显示错误消息和确切的命令。详细而具体。

标签: python sql postgresql ubuntu


【解决方案1】:

首先:您可能会发现使用 Ubuntu 作为pg_wrapper 的一部分提供的自定义工具更容易在 Ubuntu 上管理 Pg 安装:pg_createclusterpg_dropclusterpg_ctlcluster 等。这些与 Ubuntu 启动脚本集成并将配置移动到 Ubuntu 喜欢保留它的 /etc/postgresql/,而不是 datadir 中的 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 将您的新数据目录位置映射到旧位置,这样就不会注意到差异。然后将绑定挂载添加到/etc/fstab 以使其在重新启动后保持不变。如果其中一个工具不喜欢符号链接方法,您只需要这样做。我认为pg_wrapper 等不会有问题。

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

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

【讨论】:

    猜你喜欢
    • 2022-08-03
    • 2014-06-27
    • 1970-01-01
    • 2023-01-25
    • 2014-11-17
    • 2019-08-11
    • 2015-08-24
    相关资源
    最近更新 更多