数据库未在 init.d 中启动

数据库未在 init.d 中启动

我正在尝试在 Beaglebone Black 上设置一个小型 Postgresql 数据库。该应用程序运行缓慢,因此我将数据库存储在 64GB microSD 卡上。我格式化了驱动器,并正确安装了它。

我以 postgres 身份登录

sudo su postgres

创建数据库集群

./initdb /data   # the mountpoint is /data

一切似乎都正常。我可以

./postgres -D /data and the cluster seems to start correctly.

我希望数据库在 init.d 中启动,因此我编辑了 /etc/postgresql/9.1/postgresql.conf 中的三行,并将这三条条目指向 /data。当我启动机器时,数据库失败,日志文件中显示以下内容

autovacuum launcher started
database system is ready
incomplete startup packet
received smart shutdown request
autovacuum launcher shutting down
database system is shutdown

我显然遗漏了一些东西,如果能指出在哪里可以找到我遗漏的东西,我将不胜感激。

答案1

如果您使用专门用于与这些脚本协同工作的工具创建了 postgres 实例,那么启动脚本将会选取您的 postgres 实例,即:

例如,您不需要运行initdb,并假设您已经安装了该postgresql-9.1软件包,而是应该执行以下操作:

sudo pg_createcluster --datadir=/data 9.1 mycluster

/etc/postgresql/9.1然后将为该实例在for和其他配置文件下创建一个特定的目录postgresql.conf,其中包括start.conf以下内容:

# Automatic startup configuration
# auto: automatically start/stop the cluster in the init script
# manual: do not start/stop in init scripts, but allow manual startup with
#         pg_ctlcluster
# disabled: do not allow manual startup with pg_ctlcluster (this can be easily
#           circumvented and is only meant to be a small protection for
#           accidents).

auto

然后,您可以编辑此文件以使集群在启动时自动启动或不启动。


另一方面,如果您具备 postgres 专业知识,则可以绕过 Ubuntu 处理 PostgreSQL 的软件包方式,并直接发出问题initdbpostgres -D ...如问题中所述,但您应该一路执行并使用您自己的启动脚本和配置文件。

仅将打包的内容用于部分管理工作往往行不通,例如编辑/etc/postgresql/9.1/postgresql.conf不会有太大效果,因为您的自定义调用将在您的目录下initdb创建,而直接调用将获取该文件,而不是目录下的文件postgresql.conf/datapostgres -D /data/etc/...

相关内容