Skip to content

Instantly share code, notes, and snippets.

@yuryroot
Last active October 5, 2016 13:35
Show Gist options
  • Save yuryroot/7bb89a286f0b840c6ee5 to your computer and use it in GitHub Desktop.
Save yuryroot/7bb89a286f0b840c6ee5 to your computer and use it in GitHub Desktop.
Bash script for backup Postgresql cluster
#!/usr/bin/env bash
PG_USER="postgres"
TIMESTAMP=$(date +%Y_%m_%d)
WORKING_DIR="/home/usgene/db_backup"
BACKUP_NAME="${TIMESTAMP}_pg_basebackup"
ARCHIVE_NAME="$BACKUP_NAME.tar.gz"
SPLIT_NAME_PREFIX="${ARCHIVE_NAME}_"
SPLIT_SIZE="10G"
log() {
echo "[$(date)] $1"
}
exit_unless_success() {
exit_code=$?
if [ $exit_code -ne 0 ]; then
exit $exit_code
fi
}
if [ ! -d "$WORKING_DIR" ]; then
mkdir -p "$WORKING_DIR"
exit_unless_success
fi
cd $WORKING_DIR
log "Creating basebackup..."
pg_basebackup -U $PG_USER --pgdata=$BACKUP_NAME --xlog-method=stream
exit_unless_success
log "Compressing backup..."
tar -czf $ARCHIVE_NAME $BACKUP_NAME
exit_unless_success
log "Splitting archive by parts of $SPLIT_SIZE..."
split -b $SPLIT_SIZE $ARCHIVE_NAME $SPLIT_NAME_PREFIX
exit_unless_success
log "Removing uncompressed basebackup..."
rm -rf $BACKUP_NAME
exit_unless_success
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment