如何在非默认 postgres 安装上执行vacuumdb

问题描述 投票:0回答:1

我有一个 postgres 12 集群正在侦听端口 5433,并且 PGDATA 目录位于非默认位置 (/u2/app/postgres/13/data)。

作为 postgres 升级(从版本 12 到 13)的一部分,当我尝试执行analyze_new_cluster.sh 脚本时,出现以下错误。

vacuumdb:错误:无法连接到数据库模板1:无法连接到服务器:没有这样的文件或目录 服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?

如何告诉vacuumdb在正确的集群上连接/运行?

PS:是的,我还有一个托管在同一台 Linux 服务器上的默认 postgres 集群(端口 5432)。

提前致谢。

postgresql upgrade
1个回答
0
投票

可以添加特定参数连接(https://www.postgresql.org/docs/current/app-vacuumdb.html)

...vacuumdb 还接受以下命令行参数作为连接参数:

-h 主机 --主机=主机 指定运行服务器的计算机的主机名。如果该值以斜杠开头,则用作 Unix 域套接字的目录。

-p 端口 --端口=端口 指定服务器侦听连接的 TCP 端口或本地 Unix 域套接字文件扩展名。

-U 用户名 --用户名=用户名 连接的用户名。

-w --无密码 切勿发出密码提示。如果服务器需要密码身份验证,并且无法通过其他方式(例如 .pgpass 文件)获得密码,则连接尝试将失败。此选项在没有用户输入密码的批处理作业和脚本中非常有用。

-W - 密码 强制vacuumdb在连接到数据库之前提示输入密码。 这个选项从来都不是必需的,因为如果服务器要求密码身份验证,vacuumdb将自动提示输入密码。然而,vacuumdb 会浪费一次连接尝试来发现服务器需要密码。在某些情况下,值得输入 -W 以避免额外的连接尝试。

--maintenance-db=数据库名称 当使用 -a/--all 时,指定要连接到的数据库的名称,以发现应清理哪些数据库。如果未指定,则将使用 postgres 数据库,如果该数据库不存在,则将使用 template1。这可以是连接字符串。如果是这样,连接字符串参数将覆盖任何冲突的命令行选项。此外,在连接到其他数据库时,除数据库名称本身之外的连接字符串参数将被重新使用...

你好,亚历杭德罗

© www.soinside.com 2019 - 2024. All rights reserved.