+7 495 230 03 03 8 800 222 50 03
DevOps

Создание резервных копий SQL Postgres на S3-хранилище

В этой статье объясним, как настроить автоматическое резервное копирование баз данных SQL Postgres на серверы объектного хранилища S3. Для этого нам понадобится предварительно настроенный сервер на ОС Linux Ubuntu.

Установка и настройка ПО s3cmd для подключения к S3-хранилищу

Устанавливаем s3cmd:

sudo apt-get install s3cmd

Настраиваем подключение к нашему S3-хранилищу:

s3cmd –configure

Вводим свои данные от S3-хранилища:

s3cmd ls

Это позволит увидеть S3 бакеты.

Создание скрипта для резервных копий БД SQL Postgres

Cоздаем скрипт backup.sh следующего содержания:

#!/usr/bin/env bash
DB_NAME=BP # Имя БД
DB_USER=postgres # Пользователь  БД
DB_PASS=*** # Пароль БД
TIMESTAMP=$(date +%F_%T | tr ':' '-')
TEMP_FILE=$(mktemp tmp.XXXXXXXXXX)
S3_FILE="s3://1c-backup/day/BP-$TIMESTAMP" # Путь куда сохранять бэкапы

PGPASSWORD=$DB_PASS pg_dump -Fc --no-acl -h localhost -U $DB_USER $DB_NAME > $TEMP_FILE
s3cmd put $TEMP_FILE $S3_FILE
rm "$TEMP_FILE"

Создание скрипта для удаления старых резервных копий

Создаем скрипт backupdel.sh следующего содержания:

 s3cmd ls s3://1c-backup/day/ | while read -r line;
       do
        createDate=`echo $line|awk {'print $1" "$2'}`
        createDate=`date -d"$createDate" +%s`
        olderThan=`date --date "14 days ago" +%s` # кол-во дней которые хранятся бэкапы
        if [[ $createDate -lt $olderThan ]]
           then
            fileName=`echo $line|awk {'print $4'}`

            if [[ $fileName != "" ]]
            then
                    s3cmd del "$fileName"
            fi
       fi

       done;

Настраиваем планировщик Cron для выполнения скриптов

Устанавливаем:

sudo apt-get install cron

Открываем файл crontab, в котором хранятся задания:

crontab -e

Добавляем в crontab скрипты и задаем время, когда им необходимо запуститься.

Окно nginx

Рисунок 1 – Задания Cron

Дата публикации: 31 июля 2022
Не нашли ответа на свой вопрос?

Смотрите также

Обсуждение материала

  • Сергей

    Классная статья, спасибо огромное! А как, в случае чего, восстановить бэкап?

Содержание

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.