是否可以仅通过端口号来停止postgres实例?我在端口5433上运行了一个pgsql,当我尝试运行时:
/usr/pgsql-10/bin/pg_ctl -D /var/lib/pgsql/new_cluster/data stop当我指定-D时,这是可行的,但是假设我不知道$PGDATA在哪里,我只知道运行在这个实例上的端口号,可以停止它吗?
/usr/pgsql-10/bin/pg_ctl -p 5433 stop运行此命令将导致:
waiting for server to shut down.... done
server stopped但是当我试图通过psql -p 5433输入这个实例时,我仍然可以进入。*我知道使用systemctl可以这样做,但我需要在没有根权限的情况下这样做。
我尝试这样做是因为:我创建了一个pg_basebackup,我希望停止真正的数据库,并在同一个端口上运行pg_basebackup刚刚创建的数据库。只是为了确认备份是否正常。
发布于 2020-11-19 08:11:37
-p不是pg_ctl中的端口号。文献资料说:
-ppath指定postgres可执行文件的位置。默认情况下,postgres可执行文件是从与pg_ctl相同的目录中提取的,或者如果没有,则从硬连接的安装目录中提取。没有必要使用此选项,除非您正在做一些不寻常的事情,并得到没有找到postgres可执行文件的错误。
所以这对pg_ctl stop没有任何作用,因为这会从postmaster.pid中找到进程ID。您停止了环境变量PGDATA指向的集群。
如果要按端口号停止PostgreSQL,请以超级用户(或pg_read_all_settings角色的成员)的身份连接并运行
SHOW config_file;然后从输出中去掉postgresql.conf,您就有了与-D一起使用的参数。很容易就可以写成剧本了。
https://stackoverflow.com/questions/64907501
复制相似问题