好的,首先我必须指出,我在这里使用社区工作,所以请原谅任何误解。这就是说,我们有一个带有PostgreSQL 9.6的数据库服务器和一个运行3.2的Zabbix服务器,可以写入该数据库。我们根据以下文档设置了分区:
https://www.zabbix.org/wiki/Higher_performant_partitioning_in_PostgreSQL
#!/bin/bash
pgIsInRecovery () {
local IN_RECOVERY=$(/usr/edb/as9.6/bin/psql -d zabbix -U zabuser -c 'SELECT pg_is_in_recovery()')
case ${IN_RECOVERY// /} in
( t ) return 0 ;;
( f ) return 1 ;;
esac
}
printUsage () {
cat <<- EOT
Usage: ${0} runme
EOT
}
printSql () {
cat <<- SQL
\set VERBOSITY 'terse'
SELECT zabbix_partition_maintenance('1 week', 4, 52, 1);
\quit
SQL
}
main () {
case $1 in
( runme )
if ! pgIsInRecovery
then
printSql | /usr/bin/psql -U zabuser zabbix
else
echo $pgIsInRecovery
echo "PostgreSQL cluster is in recovery. Exiting."
fi
;;
( * )
printUsage
return 1
;;
esac
}
main "$@"
exit $?
如果我手动执行以下操作,我会在:/usr/edb/as9.6/bin/psql-d zabbix-U zabuser-c“SELECT pg\U is\U in\U recovery()”后面加一行得到结果
-bash-4.2$ psql -t -U zabuser -d zabbix -c 'SELECT pg_is_in_recovery()'
f
-bash-4.2$
提前感谢您的帮助。