Как настроить резервное копирование баз СУБД PostgreSQL в Linux

Материал из largespace
Перейти к навигации Перейти к поиску

Вопрос:

Как настроить резервное копирование баз СУБД PostgreSQL в Linux?

Ответ:

Для резервного копирования базы СУБД используются скрипты, написанные с применением синтаксиса shell. Скрипты пишутся в файлах с форматом *.sh в любом текстовом редакторе. Ниже представлен готовый скрипт резервного копирования с задаваемыми параметрами

# Переменная текущей даты с часом
DATE=$(date +%Y%m%d%H)
# Имя администратора СУБД, от имени которого выполняется подключение
PG_USER=postgres
# Пароль администратора СУБД
PG_PASS=postgres
# Пусть к резервным копиям
PG_LOCAL_PATH=/path/to/backup

# Основной скрипт резервной копии с обработкой в качестве параметра имени базы данных
backup() {
  # Получаем из параметра имя базы данных
  PG_DB_NAME=$1
  # Формируем имя файла копии
  DB_SQL=${PG_DB_NAME}_${DATE}.sql.gz
  # Выполняем выгрузку копии базы с одновременным сжатием
  pg_dump --dbname=postgresql://$PG_USER:$PG_PASS@localhost:5432/$PG_DB_NAME | gzip > $PG_LOCAL_PATH/$DB_SQL

}

# Очистка от старых копий старше 2 дней
for i in $(find $PG_LOCAL_PATH -type f -mtime +1 -name "*.sql.gz" -print); do
  rm $i
done

# Для вызова последовательного копирования база за базой достаточно вызвать скрипт здесь же
backup my_base_1
backup my_base_2

Для настройки автоматического резервного копирования нужно под учетной записью пользователя в консоли выполнить команду crontab -e, затем внести запись в параметры фоновых операций

0 2 * * * /path/to/script/backup.sh

В конце файла обязательно оставить пустую строку. В данном примере указано что каждый день в 2 часа ночи будет запускаться скрипт.