summaryrefslogtreecommitdiff
path: root/databases/pgpool-II/files/pgpool_copy_backup
diff options
context:
space:
mode:
Diffstat (limited to 'databases/pgpool-II/files/pgpool_copy_backup')
-rw-r--r--databases/pgpool-II/files/pgpool_copy_backup37
1 files changed, 37 insertions, 0 deletions
diff --git a/databases/pgpool-II/files/pgpool_copy_backup b/databases/pgpool-II/files/pgpool_copy_backup
new file mode 100644
index 000000000000..31d0d4651921
--- /dev/null
+++ b/databases/pgpool-II/files/pgpool_copy_backup
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# $FreeBSD$
+
+SRC=pgsql@$(hostname)
+SRCDIR=$1
+DEST=pgsql@$2
+DESTDIR=$3
+ARCLOG=$1/archive_log
+
+logger="logger -t pgpool -p local0.info"
+rsync="/usr/local/bin/rsync -av --delete --checksum"
+excl="--exclude=pg_log --exclude=archive_log --exclude=postmaster.pid"
+psql=/usr/local/bin/psql
+
+/bin/sh <<EOF | ${logger} 2>&1
+
+$psql -c "select pg_start_backup('pgpool-recovery')" template1
+
+ssh $DEST "
+/usr/local/etc/rc.d/postgresql stop;
+rm -rf $DESTDIR/pg_xlog;
+rm -f $DESTDIR/backup_label"
+
+echo "restore_command = 'scp $SRC:$ARCLOG/%f %p'" > $SRCDIR/recovery.conf
+
+$rsync $SRCDIR/ $excl $DEST:/$DESTDIR/
+
+ssh $DEST "
+mkdir -p $DESTDIR/pg_xlog/archive_status;
+mkdir -p $DESTDIR/pg_log"
+
+rm -f $SRCDIR/recovery.conf
+
+$psql -c 'select pg_stop_backup()' template1
+
+EOF