Инструкция по резевному копированию СУБД Postgres (pg_basebackup)
Инструкция по резевному копированию СУБД Postgres (pg_basebackup)
0. В примере используется Postgresql-12. Для других версий необходимо уточнить пути расположения бинарных файлов.
1. Наши резервные копии будут распологатся в каталоге /BACKUP/db
Создадим этот каталог
# cd /
# mkdir BACKUP
# cd BACKUP
# mkdir db
# cd /
2. Накатим права postgres на созданный каталог и всё что внутри.
# chown -R postgres:postgres /BACKUP
3. Создадим каталог, где будут хранится скрипты. В том числе, скрипт резервного копирования.
# mkdir /opt/scripts
# touch /opt/scripts/backup_base.sh
# mcedit /opt/scripts/backup_base.sh
4. Внесем следующие строки в SHELL скрипт:
==== Начало скрипта
#! /usr/bin/bash
#Складировать будем бэкапы по датам. Один бэкап в одну папку
dt=`date +%Y%m%d`
mkdir -p /BACKUP/db/$dt
#Настроим автоматическую ротацию файлов. Старые копии будут затиратся.
#Для увеличения количества копий увеличьте цифру 7 до необходимого значения.
find /BACKUP/db/* -mtime +7 -print0 | xargs -0 rm -Rf
#Выполнение резервной копии
/usr/pgsql-12/bin/pg_basebackup --wal-method=stream -z --format=tar -U postgres -D /BACKUP/db/$dt
==== Конец скрипта
Примечание: Для определения того, где находится pg_basebackup или bash, воспользуйтесь командой whereis. Например, whereis pg_basebackup.
5. Сохраняем скрипт, делаем этот скрипт исполняемым.
6. Запустим скрипт и убедимся, что он работает правильно. Через некоторое время в каталоге /BACKUP/db должен создатся каталог с архивом (tar.gz) резервной копией внутри. По желанию ставим в cron на вечернее время.
Идеи, баги, вопросы?
Сообщи нам t.me/screensquid