我想知道是否有替代psql命令来测试使用bash连接到postgresql数据库。
我正在设置一个核心操作系统群集,并且有一个辅助服务,它应该每分钟执行相当于psql 'host=xxx port=xxx dbname=xxx user=xxx'
以确定服务是否正在运行,更重要的是,如果可以使用该服务连接到它给定参数)。
我无法直接在Core OS上安装postgres。通常在Core OS中使用的命令类似于curl -f ${COREOS_PUBLIC_IPV4}:%i;
。但它只告诉服务本身是否在给定端口上运行,没有任何访问检查。
提前谢谢!
答案 0 :(得分:17)
pg_isready是一个用于检查PostgreSQL数据库服务器连接状态的实用程序。退出状态指定连接检查的结果。
它可以很容易地用于bash。
https://www.postgresql.org/docs/9.3/static/app-pg-isready.html
答案 1 :(得分:6)
您可以用您选择的语言编写简单的连接脚本。
希望您的Core OS系统安装了perl,php,python,ruby等
这是python中的一个:
#!/usr/bin/python2.4
#
import psycopg2
try:
db = psycopg2.connect("dbname='...' user='...' host='...' password='...'")
except:
exit(1)
exit(0)
现在你的cmdline看起来像这样
python psqltest.py && echo 'OK' || echo 'FAIL'
答案 2 :(得分:2)
您可以构建一个简单的容器,扩展第一个容器(以节省磁盘)以执行检查。例如:
FROM postgres
ENTRYPOINT [ "psql", "-h", "$POSTGRES_PORT_5432_TCP_ADDR", "-p", "$POSTGRES_PORT_5432_TCP_PORT" ]
如果您使用的图像与postgres
不同,当然要使用该图像。您可以使用几乎任何您喜欢的命令行,并仍然检查CoreOS主机上bash的退出代码:
#!/bin/sh
if ! docker run --link postgres:postgres psql --command "select * from foo;" ; then
# Do something
fi
答案 3 :(得分:0)
要在PSQL Shell(psql)中查看连接信息,请使用\c conninfo