[[ Скрипт бэкапа для PostgreSQL ]]

PostgreSQL

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

  • Python 3.x
  • psql, pg_dump, pg_dumpall
  • ~/.pgpass (опционально)

Выполняет бэкапы всех БД + глобальные объекты (global objects - роли и табличные пространства).
Формат дампа - directory-format (man pg_dump), что позволяет выполнять дамп в несколько потоков (njobs).

Сам скрипт размещен на GitHub

./pg_backup.py --help

Скрипт запускается по cron'у:

/etc/cron.d/backup

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
PYTHONIOENCODING=utf8
MAILTO=root
 
### PostgreSQL on local
0 1 * * *  postgres  OUTPUT=$(pg_backup.py --path '/mnt/nfs.storage/backup/postgres' 2>&1) || echo "${OUTPUT}"
 
### PostgreSQL in docker
0 1 * * *  root  OUTPUT=$(docker exec -i -u postgres pgdb_pgdb_1 /mnt/nfs.storage/scripts/pg_backup.py --path '/mnt/nfs.storage/backup/postgres' 2>&1) || echo "${OUTPUT}"

Очистка, 5 последних удачных бэкапов:

/etc/cron.d/backup

### PostgreSQL cleanup 
0 9 * * *  root  find /mnt/nfs.storage/backup/postgres/ -maxdepth 1 -type d -name '????.??.??_??????' | sort -r | awk 'FNR>5 {print}' | xargs -r rm -rf






Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
195 +7 = 
 
handmade/postgres/pg_backup.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki