如何使用 pg_isready 监控特定数据库?
实例:DBSPG10T1 版本:10.14 端口:6241
postgres@postgres # SELECT datname FROM pg_database;
datname
-----------
postgres
template1
template0
dbspg10t1
[postgres@HOSTNAME ~]$ if pg_isready -d postgres://localhost:6241/dbspg10t1; then echo "200 OK"; else echo "500 NOT OK"; fi
localhost:6241 - accepting connections
200 OK
数据库测试不存在,但 pg_isready 仍然返回 ok。
[postgres@HOSTNAME ~]$ if pg_isready -d postgres://localhost:6241/test; then echo "200 OK"; else echo "500 NOT OK"; fi
localhost:6241 - accepting connections
200 OK
这是语法问题吗?
看起来这可能是一个已知的错误。
pg_isready
不使用psql
实用程序的通用代码。请参阅 2013 年有关该主题的 pgsql-hackers 线程:Re: -d option for pg_isready is broken。没有深入研究它,相关的报价似乎是......
但是为什么没有改变呢?
公平地说,这是基于对该线程的粗略阅读,但出于您的目的,我认为将其视为已知错误是安全的