我正在运行 Postgresql 数据库 v9.6,我重新启动了,但现在它无法启动。似乎什么都不起作用。有什么想法吗?
我正在尝试运行我的 Django 服务器:
django.db.utils.OperationalError:无法连接到服务器:连接被拒绝服务器是否在主机“localhost”(127.0.0.1)上运行并在端口 5432 上接受 TCP/IP 连接?
我尝试执行以下命令:
$ sudo /etc/init.d/postgresql restart
* Restarting PostgreSQL 9.6 database server * Failed to issue method call: Unit [email protected] failed to load: No such file or directory. See system logs and 'systemctl status [email protected]' for details.
$ sudo service postgresql start
* Starting PostgreSQL 9.6 database server * Failed to issue method call: Unit [email protected] failed to load: No such file or directory. See system logs and 'systemctl status [email protected]' for details. [fail]
(env) dominic@dom-Inspiron-7559:~/Desktop/Project
$ systemctl status [email protected]
Failed to issue method call: No such interface 'org.freedesktop.DBus.Properties' on object at path /org/freedesktop/systemd1/unit/postgresql_409_2e6_2dmain_2eservice
$ pg_config --version
PostgreSQL 11.2 (Ubuntu 11.2-1.pgdg14.04+1)
$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 down postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
$ sudo pg_ctlcluster 9.6 main start
Failed to issue method call: Unit [email protected] failed to load: No such file or directory. See system logs and 'systemctl status [email protected]' for details.
$ sudo systemctl daemon-reload
编辑:
$ ps uxa|grep postgres
dominic 13786 0.0 0.0 15952 2304 pts/0 S+ 17:18 0:00 grep --color=auto postgres
/var/log/postgresql$ sudo vim postgresql-9.6-main.log.1
2019-03-16 16:15:26.224 EDT [7265] modadmin@mod LOG: could not receive data from client: Connection reset by peer
2019-03-17 15:08:10.290 EDT [12791] modadmin@mod LOG: could not receive data from client: Connection reset by peer
2019-03-17 15:16:39.060 EDT [17891] modadmin@mod LOG: could not receive data from client: Connection reset by peer
我今天什么也没看到..?
答案1
Dbus 是 Linux 发行版中广泛使用的进程间通信 (IPC) 解决方案。systemd 也使用它。但是,它独立于 PostgreSQL。
该systemctl status
命令显示一条错误消息,最有可能与该systemctl
命令作为命令行应用程序无法联系您的有关systemd
。Systemd 是系统的顶层守护进程,管理所有后台服务,包括 PostgreSQL。
所以你至少有两个独立的问题。请注意,此类事件在 Linux 上很少见,很可能是你运气不好。如果你的 Postgresql 中有重要数据,我希望你有某种类型的备份。
修复你的 PostgreSQL 可能更重要。显而易见的是,你的 PostgreSQL 没有启动(如果启动了,你的 django 可能已经连接上了它)。如果没有ps uxa|grep postgres
给出任何可行的结果,你可以手动、更直接地检查它。
检查 postgresql 日志的结尾,最有可能位于 中/var/log/postgresql.log
。您的数据库可能已损坏。如果是这样,您会大吃一惊 - 对于 postgresql,根本没有开发过低级数据库恢复工具。您需要始终进行良好的备份。有一些巧妙的方法可以恢复少量数据,但这些方法远远超出了本文的范围。
始终对系统中所有重要内容至少进行一次备份。它不应该是一个有用、高级、有效的解决方案,但它应该存在。例如,pg_dump yourDjangoDb|pxz -9ve - >/var/backups/djangopg.xz
对于开发工作站来说,每日备份就足够了。
用你的结尾来延伸你的问题postgresql.log
。
关于 dbus,要知道服务是否仍在运行,请执行命令ps uxa|grep dbus-daemon
。如果它不运行,则表示有问题。如果它运行,您可以 Dbus 本身没有任何真正重要的持久数据,因此您将能够采取更多“直接”方式使其再次运行。如果它不运行,则存在一些通信问题,这很可能与 中的某些 unix 套接字有关/run
。无论如何,strace systemctl status dbus.service
可以帮上大忙。