Скрипт для бэкапа PostgreSQL базы

Скрипт для бэкапа PostgreSQL базы

Скрипт находится на том же сервере, где и база. Надо подставить свои данные для доступа к базе. По красоте есть что подправить.

#!/bin/sh

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

DB_HOST="localhost"
DB_PORT="5432"
DB_USER="poject_name_user"
DB_NAME="poject_name_db"

BACKUP_DIR="/data/pg_backup"

DATE=`date +"%Y-%m-%d_%H-%M"`

PGPASS_FILE="$HOME/.pgpass"
echo "$DB_HOST:$DB_PORT:$DB_NAME:$DB_USER:<user_password>" > "$PGPASS_FILE"
chmod 600 "$PGPASS_FILE"

find $pathB \( -name "*-1[^5].*" -o -name "*-[023]?.*" \) -ctime +61 -delete

#PG_DUMP_CMD="pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -w -F c -f $BACKUP_DIR/poject_name_db_$DATE.sql"
PG_DUMP_CMD="pg_dump --jobs=4 -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -w -Fd -f $BACKUP_DIR/poject_name_db_$DATE.dir"

#database restoration
#pg_restore -Fd -j 4 -d zs_22 /data/backups_pg/poject_name_db_2023-12-22.dir
#

echo "Выполняется резервное копирование базы данных..."
$PG_DUMP_CMD

# Проверка успешности выполнения
if [ $? -eq 0 ]; then
  echo "Резервное копирование завершено успешно. Файл: $BACKUP_DIR/$BACKUP_FILENAME"
else
  echo "Ошибка при выполнении резервного копирования."
fi

rm "$PGPASS_FILE"

echo "Rsync backup to backup store."
rsync -a $BACKUP_DIR/poject_name_db_$DATE.dir user@host.name:/backup/poject_name_bk/poject_name/
echo "All done!"

Полезная информация по бэкапу и восстановлению PostgreSQL — https://selectel.ru/blog/postgresql-backup-tools/. Тут есть описание ключей, использованных в скрипте.

 

Добавить комментарий