Files
scripts/backup_scripts/postgres/pre_backup_for_backup_test.sh

49 lines
1.2 KiB
Bash

#!/bin/bash
DATE=$(date +%F)
DIRBACKUP="/data/backups"
DBUSER="postgres"
TEST_BACKUP_SERVER="h-license-manager-backup-server.avroid.cloud"
get_leader() {
curl -s 127.0.0.1:8008 | jq -j ".role"
}
if [ "$(get_leader)" != "master" ]; then
echo "I'm not leader. Exit"
exit 0
fi
getDbName() {
psql -lA -x -U ${DBUSER} -p 15432 -d postgres | grep Name | grep -v -P "template0|template1" | cut -d "|" -f 2
}
DBLIST=$(getDbName)
createBackup() {
for db in $DBLIST; do
echo "===================================="
echo "START create backup database: ${db}"
pg_dump -Fc -U ${DBUSER} -p 15432 -d "${db}" >"${DIRBACKUP}/${db}-${DATE}".sql
bzip2 -9 "${DIRBACKUP}/${db}-${DATE}".sql
copyBackupToTestServer "${DIRBACKUP}/${db}-${DATE}".sql.bz2 ${TEST_BACKUP_SERVER}
echo "END database bzip2: ${db}"
done
pg_dumpall -p 15432 -U postgres --roles-only > "${DIRBACKUP}/roles-${DATE}".sql
copyBackupToTestServer "${DIRBACKUP}/roles-${DATE}".sql ${TEST_BACKUP_SERVER}
}
copyBackupToTestServer() {
rsync $1 $2::backup || true
}
[[ $(ls -A ${DIRBACKUP}) ]] 2>/dev/null && echo "dir ${DIRBACKUP} not empty" && exit 123
createBackup
copyBackupToTestServer