diff options
Diffstat (limited to 'databases/postgresql72/files/502.pgsql')
-rw-r--r-- | databases/postgresql72/files/502.pgsql | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/databases/postgresql72/files/502.pgsql b/databases/postgresql72/files/502.pgsql new file mode 100644 index 000000000000..c372163f7407 --- /dev/null +++ b/databases/postgresql72/files/502.pgsql @@ -0,0 +1,83 @@ +#!/bin/sh +# +# $FreeBSD$ +# +# Maintenance shell script to vacuum and backup database +# Put this in /usr/local/etc/periodic/daily, and it will be run +# every night +# +# Written by Palle Girgensohn <girgen@partitur.se> +# +# In public domain, do what you like with it, +# and use it at your own risk... :) +# +###################################################################### +# +# If you like to tweak the settings of the variables PGBACKUPDIR and +# PGDUMP_ARGS, you should preferably set them in ~pgsql/.profile. +# If set there, that setting will override the defaults here. +# +###################################################################### + +DIR=`dirname $0` +progname=`basename $0` +PRG=`cd $DIR; pwd `/$progname + +# Run as user pgsql +if [ `id -un` != pgsql ]; then + su -l pgsql -c ${PRG} + exit $? +fi + +# arguments to pg_dump +PGDUMP_ARGS=${PGDUMP_ARGS:-"-b -F c"} + +# The directory where the backups will reside. +# ${HOME} is pgsql's home directory +# +PGBACKUPDIR=${PGBACKUPDIR:-${HOME}/backups} + +# PGBACKUPDIR must be writeable by user pgsql +# ~pgsql is just that under normal circumstances, +# but this might not be where you want the backups... +if [ ! -d ${PGBACKUPDIR} ] ; then + echo Creating ${PGBACKUPDIR} + mkdir ${PGBACKUPDIR} + chmod 700 ${PGBACKUPDIR} +fi + +echo +echo "PostgreSQL maintenance" + +# Protect the data +umask 077 +dbnames=`psql -q -t -A -d template1 -c "SELECT datname FROM pg_database WHERE datname != 'template0'"` +rc=$? +file=${PGBACKUPDIR}/pgglobals_`date "+%Y%m%d"` +pg_dumpall -g | gzip -9 > ${file}.gz +for db in ${dbnames}; do + echo -n " $db" + file=${PGBACKUPDIR}/pgdump_${db}_`date "+%Y%m%d"` + pg_dump ${PGDUMP_ARGS} -f ${file} ${db} + [ $? -gt 0 ] && rc=3 +done + +if [ $rc -gt 0 ]; then + echo + echo "Errors were reported during backup." +fi + +echo +echo "vacuuming..." +vacuumdb -a -z -q +if [ $? -gt 0 ] +then + echo + echo "Errors were reported during vacuum." + rc=3 +fi + +# cleaning up old data +find ${PGBACKUPDIR} -name 'pgdump_*' -a -atime +7 -delete + +exit $rc |