Skip to content
Snippets Groups Projects
Commit fb38974b authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

Merge branch 'pgsql-snapshot-fallback' into 'master'

pg backup: disconnect after 21:00 and before 05:00

See merge request !151
parents 35fdb41a 174b597c
No related branches found
No related tags found
1 merge request!151pg backup: disconnect after 21:00 and before 05:00
......@@ -45,8 +45,12 @@ function pgsql.backup(){
local snapshotprefix="snapshot_"
local bUseSnapshot
local bUseSnapshot4DB
local bDisconnect
local iHour;
typeset -i bUseSnapshot=0
typeset -i bDisconnect=0
typeset -i iHour; iHour=$( date +%H)
create_targetdir
......@@ -70,6 +74,14 @@ function pgsql.backup(){
echo "INFO: create database failed for snapshots - dumping databases directly"
fi
# disconnect after 21:00 and before 05:00
if [ $bUseSnapshot -eq 1 ]; then
if [ $iHour -ge 21 ] || [ $iHour -lt 5 ]; then
echo "INFO: clients will be disconnected for snapshot database creation"
bDisconnect=1
fi
fi
sSqlGetDblist="select datname from pg_database where not datistemplate and datallowconn order by datname;"
for DATABASE in $( su ${PGUSER} -c "psql ${BACKUP_PARAMS} -At -c '$sSqlGetDblist' postgres" 2>/dev/null | grep -v "^$snapshotprefix" )
do
......@@ -86,13 +98,22 @@ function pgsql.backup(){
# drop snapshot db first - just in case
if [ $bUseSnapshot4DB -eq 1 ]; then
echo -n " snapshot ... "
echo -n " snapshot ."
su ${PGUSER} -c "dropdb ${SNAPSHOTDB}" >/dev/null 2>&1
echo -n "."
test $bDisconnect -ne 0 && su ${PGUSER} -c "psql ${BACKUP_PARAMS} -c \"
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = '${DATABASE}'
AND pid <> pg_backend_pid();
\"" >/dev/null
echo -n "."
if ! su ${PGUSER} -c "psql ${BACKUP_PARAMS} -c \"CREATE DATABASE ${SNAPSHOTDB} WITH TEMPLATE ${DATABASE};\"" >/dev/null; then
echo -n "Fallback using origin ... "
bUseSnapshot4DB=0
SNAPSHOTDB="${DATABASE}"
fi
echo -n " "
fi
if [ $myrc -eq 0 ]; then
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment