如何重新启动Postgresql

158

我在我的Linux Mint机器上安装了PostgreSQL 9.39.4

如何重启PostgreSQL 9.4?

同时重启两个版本的方法也可以。


你在网上搜索过吗?http://www.codeproject.com/Articles/898303/Installing-and-Configuring-PostgreSQL-on-Linux-Min - kometen
我建议将您的数据迁移到9.4版本,然后删除9.3版本的安装。 - Jan Henke
1
@kometen 引用的文章没有提供一种有选择性地启动和停止每个单独实例的方法。 - EnzoR
@JanHenke 我不会建议超出问题范围的任何事情。无论如何,v9.5是当前稳定版本。 - EnzoR
@Enzo说他同时运行两个版本。所以我建议迁移到新的版本,这也会解决问题,因为只剩下一个postgresql。 - Jan Henke
显示剩余3条评论
9个回答

240

作为root用户尝试以下命令(你可以使用sudo或者su):

/etc/init.d/postgresql restart

脚本不带任何参数时,还会给出有关如何重新启动特定版本的提示。

[Uqbar@Feynman ~] /etc/init.d/postgresql
Usage: /etc/init.d/postgresql {start|stop|restart|reload|force-reload|status} [version ...]
同样地,如果您拥有它,您也可以使用service工具:
[Uqbar@Feynman ~] service postgresql
Usage: /etc/init.d/postgresql {start|stop|restart|reload|force reload|status} [version ...]
请注意可选的[version ...]尾随参数。这是为了让您作为用户对特定版本进行操作,以防您正在运行多个版本。因此,在保持版本X不变且运行时,您可以重新启动版本XZ。 最后,如果您正在运行systemd,则可以像这样使用systemctl:
[Uqbar@Feynman ~] systemctl status postgresql
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2017-11-14 12:33:35 CET; 7min ago
...

您可以将status替换为stopstartrestart,以及其他操作。有关完整详细信息,请参阅文档

为了在多个并发版本上操作,语法略有不同。例如,要停止v12重新加载v13,可以运行:

systemctl stop postgresql-12.service
systemctl reload postgresql-13.service

感谢@Jojo向我指出这个非常实用的资源。 请记住,对于像之前看到的其他情况中的非信息性任务,可能需要root权限。


你能给一个例子吗?版本号似乎没有任何影响。 - Alex
你尝试过比如执行 "/etc/init.d/postgresql status 10" 吗? - EnzoR
2
systemctl 可以在不同版本的 Postgresql 上工作。您可以使用 systemctl status postgresql@13-main.service 来指定它。将 13 替换为您想要处理的版本号。 - Jojo
1
如果只有 status postgresql 的状态为 “exited”,则真实状态应该是 systemctl status postgresql@12-main.service - Алексей Неудачин

70

您也可以使用此命令重新启动postgresql,适用于两个版本:

sudo service postgresql restart

对我来说,如果已经在运行,这似乎没有任何作用。(在那里使用“重启”而不是“启动”似乎有效) - omgponies

25

在 Windows 上:

1- 使用 Winkey + R 组合键打开运行窗口。

2- 输入 services.msc

3- 根据安装的版本搜索 Postgres 服务。

4- 单击停止、启动或重新启动服务选项。

在 Linux 上:

sudo systemctl restart postgresql

另外,您可以使用“停止”或“状态”替换“重新启动”。


OP说:“我在我的Linux Mint机器上安装了Postgresql 9.3和9.4。”...现在是Windows! - EnzoR
@EnzoR 我的回答涵盖了Linux和Windows!!!这有问题吗?也许有人需要它 :) 不要太在意啦,伙计。 - Sobhan
不要太在意。 这个帖子是关于Linux和同时存在的两个版本。 你的回答是关于Windows和Linux,只有一个默认版本。 我只是说你的回答没有命中要害。 - EnzoR

8
这应该可以工作:
sudo systemctl stop postgresql
sudo systemctl start postgresql

3
正确重启PostgreSQL服务器的方法是使用以下命令:

pg_ctl restart -D /home/postgres/postgresdbdata/

如果您没有将pg_ctl添加到路径中,则通常可以在usr/local/pgsql/bin/pg_ctl位置找到它。
此文档https://www.postgresql.org/docs/13/app-pg-ctl.html提供了更多关于启动、停止、重启等PostgreSQL服务器的详细信息。请注意保留HTML标签。

1
你可以先检查PostgreSQL进程是否正在运行。
ps -ef | grep post

您可能需要在grep命令中使用(post|pg)来发现在您的计算机上运行的Postgres服务的进程,这可能取决于您的操作系统。

由于大多数此进程应该会自动重新启动,因此您可以直接杀死子进程。

sudo kill $pid_of_the_child_process

0

macOS:

  1. 在MacOS菜单栏的左上角,您会看到Postgres图标
  2. 点击它会打开一个下拉菜单
  3. 点击停止->然后点击启动

在 macOS 上,您有一个顶部菜单栏,通常存储时钟、搜索图标等,并且一些正在运行的小型应用程序可以打开。在那里,您也可以看到象征Postgres的大象图标。 - sogu
我使用macOS Mojave 10.14.6,但顶部菜单没有显示这样的图标。但我的数据库管理器显示Postgres服务器处于活动状态。 - Agent47
OP说:“我在我的Linux Mint机器上安装了Postgresql 9.3和9.4。”...现在是macOS! - EnzoR

0

通过以下步骤,我成功重启了位于/database/pgsql目录下并最初由另一个用户启动的Postgres服务器

  • 查找postgres目录的所有者。
    ls -l /database/pgsql
    在我的情况下,所有者是postgres用户。

  • 设置Postgres数据目录路径,否则重新启动会出现有关缺少数据目录路径的错误。
    export PGDATA='/database/pgsql/data'

  • 使用以下命令重新启动Postgres服务器。
    sudo -u postgres -E /database/pgsql/bin/pg_ctl restart
    -u以postgres用户身份运行命令-E包括当前用户环境变量,因此PGDATA变量值对命令可见。需要sudo权限才能运行命令。


0
对于Postgres 14
[root@95 pgsql]# service postgresql-14 status

然后你可以用“start”和“stop”来替换“status”.. 以检查版本。
[root@95 pgsql]# psql --version

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接