PostgreSQL自带的命令行工具06- pg_isready

发布于:2024-05-06 ⋅ 阅读:(23) ⋅ 点赞:(0)

PostgreSQL自带的命令行工具06- pg_isready

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

pg_isready 是 PostgreSQL 中的一个命令行工具,用来检查 PostgreSQL 服务器是否可以接收连接。这个命令通常用于脚本中,以自动化地检查数据库服务的状态,特别是在启动脚本、监控系统或在持续集成流程中等待数据库服务准备就绪的场景。

通过help查看帮助文档。

[pg16@test ~]$ pg_isready --help
pg_isready issues a connection check to a PostgreSQL database.

Usage:
  pg_isready [OPTION]...

Options:
  -d, --dbname=DBNAME      database name
  -q, --quiet              run quietly
  -V, --version            output version information, then exit
  -?, --help               show this help, then exit

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory
  -p, --port=PORT          database server port
  -t, --timeout=SECS       seconds to wait when attempting connection, 0 disables (default: 3)
  -U, --username=USERNAME  user name to connect as

Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>

使用方式

基本的命令格式如下:

pg_isready [选项]

你可以使用不同的选项来指定要检查的 PostgreSQL 服务器的详细信息,比如主机、端口、用户名和数据库名称。

常用选项

  • -h--host=HOSTNAME:指定要连接的服务器的主机名。默认是本地主机。
  • -p--port=PORT:指定服务器侦听的端口。默认端口是 5432。
  • -U--username=USERNAME:指定连接数据库的用户名。默认是当前的用户。
  • -d--dbname=DBNAME:指定连接测试的数据库名。默认是与用户名相同的数据库。
  • -t--timeout=SECS:在报告失败之前等待连接成功的最大秒数。默认没有超时(等待无限长)。
  • -V--version:输出 pg_isready 的版本信息。
  • -?--help:显示帮助信息。

输出状态

pg_isready 通过退出状态码来指示服务器的准备状态:

  • 0:服务器正在运行并且可以接收连接。
  • 1:服务器正在运行,但是拒绝连接(可能是因为达到了最大连接数,或者是在维护模式)。
  • 2:无法连接到服务器。这可能是因为服务器没有运行,或者连接详情(比如主机名或端口)不正确。
  • 3:没有尝试连接(通常是因为命令行选项错误)。

示例

检查本地主机上默认端口的 PostgreSQL 服务器状态:

[pg16@test ~]$ pg_isready
/tmp:5777 - accepting connections

检查特定主机192.168.10.99 和端口5777上的服务器状态:

[pg16@test ~]$ pg_isready -h 192.168.10.99 -p 5777
192.168.10.99:5777 - accepting connections

检查特定数据库white和用户postgres的连接状态:

[pg16@test ~]$ pg_isready -d white -U postgres
/tmp:5777 - accepting connections

pg_isready 工具特别适用于那些需要编程方式来确认数据库服务是否就绪的场景,例如,在自动化部署或健康检查脚本中。

谨记:心存敬畏,行有所止。