Skip to content

Instantly share code, notes, and snippets.

@crpb
Created November 7, 2021 02:50
Show Gist options
  • Save crpb/e63f8817ba4bec22487f16069fa6862a to your computer and use it in GitHub Desktop.
Save crpb/e63f8817ba4bec22487f16069fa6862a to your computer and use it in GitHub Desktop.
Helper Script and functions for pg_probackup with which i run my cronjob's. The functions are also useful for ~backupuser/.bashrc|.zshrc.
#!/bin/bash
shopt -s expand_aliases
export BACKUPDIR=/mnt/to/nfs/dedup/storage/postgres/pg_probackup
INSTANCES () { pg_probackup-13 show -B $BACKUPDIR --format json |jq -r '. [].instance' ;}
SHOWBACKUP () {
if [ -z $@ ]; then
pg_probackup-13 show -B $BACKUPDIR
else
pg_probackup-13 show -B $BACKUPDIR --instance $1
fi
}
FULLBACKUP () { pg_probackup-13 backup -B $BACKUPDIR -b FULL --instance $@; }
DELTABACKUP () { pg_probackup-13 backup -B $BACKUPDIR -b DELTA --instance $@ ;}
PAGEBACKUP () { pg_probackup-13 backup -B $BACKUPDIR -b PAGE --instance $@; }
CHECKDB () { pg_probackup-13 checkdb -B $BACKUPDIR --instance $1 -D /srv/dbs/$1/13;}
VALIDATE () { pg_probackup-13 validate -B $BACKUPDIR --instance $@ ;}
CLEANUP () { pg_probackup-13 delete -B $BACKUPDIR --delete-expired --delete-wal --merge-expired --instance $@ ;}
for INST in `INSTANCES`; do
$@ ${INST}
done
#CRONJOBS Example
#*/5 * * * * bash -c '/path/to/script/probackup_invoke PAGEBACKUP |& tee -a ~/cron.log'
#15 * * * * bash -c '/path/to/script/probackup_invoke DELTABACKUP |& tee -a ~/cron.log'
#25 */6 * * * bash -c '/path/to/script/probackup_invoke FULLBACKUP |& tee -a ~/cron.log'
#35 3 * * * bash -c '/path/to/script/probackup_invoke CLEANUP |& tee -a ~/cron.log'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment