Автоматизированные бэкапы postgresql

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Photo by Caspar Camille Rubin on Unsplash
Photo by Caspar Camille Rubin on Unsplash

Всем привет! Я бы сказал что эта статья cookbok по которому можно создать простое и эффективное решение для создания бэкапов базы данных.

Казалось бы довольно очевидная задача но тем не менее когда я хотел её решить столкнулся с множеством проблем. Готовые бесплатные решения в большинстве своем направленны на управления кластерами или не поддерживаются на ARM машинах.

В ходе исследования был собран следующий рецепт с помощью которого можно делать бэкапы и получать уведомления по почте, вам даже не понадобиться свой smtp достаточно gmail аккаунта.

Скрипт создания бэкапов

# ~/pg_backup.sh
db_name=dbname
db_user=dbuser
db_host=host
backupfolder=~/postgresql/backups 
recipient_email=youremail@example.ru
# Сколько дней хранить файлы
keep_day=30
sqlfile=$backupfolder/database-$(date +%d-%m-%Y_%H-%M-%S).sql
zipfile=$backupfolder/database-$(date +%d-%m-%Y_%H-%M-%S).zip
mkdir -p $backupfolder

if pg_dump -U $db_user -h $db_host $db_name > $sqlfile ; then
   echo 'Sql dump created'
else
   echo 'pg_dump return non-zero code' | mailx -s 'No backup was created!' $recipient_email
   exit
fi

if gzip -c $sqlfile > $zipfile; then
   echo 'The backup was successfully compressed'
else
   echo 'Error compressing backup' | mailx -s 'Backup was not created!' $recipient_email
   exit
fi
rm $sqlfile 
echo $zipfile | mailx -s -a $sqlfile 'Backup was successfully created' $recipient_email
 
find $backupfolder -mtime +$keep_day -delete

Делаем файл исполняемым

shmod +x pg_backup.bash

pgpass

Что бы pg_dump не запрашивал пароль создаем .pg_pass в домашней директории пользователя в формате

hostname:port:database:username:password

И устанавливаем корректные права

chmod 600 ~/.pgpass

запуск по расписанию

добавляем pg_backup.bash в cron. Каждый день в 5 утра мне кажется оптимальным вариантом. crontab -e и добавляем туда строчку. Важно, в кроне нужно указать полный путь.

0 5 * * 0-6 /home/www/pg_backup.bash

Настраиваем отправку писем

Доводилось ли вам отправлять письма из CMD линукс? Мне нет, но эта возможность радует своей простотой, настолько просто что даже сложно

sudo apt-get update 
sudo apt-get install postfix mailutils ssmtp

Настраиваем smtp. Тут можно использовать обычную гугл почту

#/etc/ssmtp/ssmtp.conf
root=your@email.com
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

Итоги

В итоге мы имеем автоматизированную систему для создания бэкапов, и что самое важное получаем уведомления на почту. Вот таким способом дешего и сердито можно обезопасить себя от потери данных.

Источник: https://habr.com/ru/post/595641/


Интересные статьи

Интересные статьи

В настоящее время типовые базы данных продакшена состоят не только из одной базы. Как правило, это несколько баз, соединенных между собой потоковой, логической репликацией, BDR, FDW и другими специфич...
Недавно мы публиковали статью про производительность Vault с разными бэкендами, а сегодня расскажем, как делать бэкапы — и снова на разных бэкендах: Consul, GCS (Google C...
Привет. Меня зовут Ваня, и я Java-разработчик. Так получилось, что я много работаю с PostgreSQL – занимаюсь настройкой БД, оптимизацией структуры, производительностью и немного играю в DBA по вы...
Этот пост будет из серии, об инструментах безопасности, которые доступны в Битриксе сразу «из коробки». Перечислю их все, скажу какой инструмент в какой редакции Битрикса доступен, кратко и не очень р...
С версии 12.0 в Bitrix Framework доступно создание резервных копий в автоматическом режиме. Задание параметров автоматического резервного копирования производится в Административной части на странице ...