Настройка резервного копирования вне кластера системы
Данный сценарий подойдет, если резервное копирование внешних баз данных настраивается на сервере вне кластера системы.
Требования
-
Установлен и настроен сервис Backup Wrapper.
-
Настроены базы данных PostgreSQL и ClickHouse для работы с резервными копиями.
-
S3-совместимое хранилище для хранения резервных копий, например: MinIO, AWS S3, Yandex Object Storage.
Настройка резервного копирования
Чтобы настроить резервное копирование:
-
Подключитесь к серверу, с которого планируется запуск резервного копирования.
-
Проверьте, что подключение к утилите wrapper настроено корректно, с помощью команд:
curl -u <auth_user>:<auth_password> <wrapper_addr>/health curl -u <auth_user>:<auth_password> <wrapper_addr>/readyЗдесь:
-
<auth_user>— логин, указанный при настройке конфигурации утилиты wrapper. -
<auth_password>— пароль, указанный при настройке конфигурации утилиты wrapper. -
<wrapper_addr>— адрес подключения к утилите wrapper, указанный при настройке ее конфигурации, например,http://localhost:8080.
-
-
Запустите автоматическое резервное копирование, выполнив команду:
./backup-wrapper backup --waitТакже вы можете выполнить принудительное резервное копирование, выполнив команду в зависимости от типа резервной копии:
-
Создание полной резервной копии:
./backup-wrapper backup --type=full --wait -
Создание резервной Incremental-копии (только для PostgreSQL):
./backup-wrapper backup --type=incremental --wait
-
-
Проверьте, что резервные копии были созданы корректно, с помощью команды:
-
PostgreSQL
-
ClickHouse
wal-g backup-listclickhouse-backup list remote -
-
Настройте автоматизацию резервного копирования в зависимости от сценария:
-
Через Cron
-
Через Systemd Timer
Для автоматизации вы можете использовать встроенныый планировщик задач Cron в Unix-подобных ОС. Для этого cоздайте файл
backup-wrapperв директории/etc/cron.d/со следующим содержимым:<schedule> backup-user /bin/bash -c 'source /etc/backup-wrapper-v1.0.0/backup-client.env && /usr/local/bin/backup-wrapper backup --wait' >> /var/log/backup.log 2>&1Здесь:
-
<schedule>— расписание резервного копирования в Cron-формате. Например,0 3 * * *— резервные копии будут создаваться ежедневно в 03:00.
Чтобы составить cron-выражение, можно воспользоваться генератором, например, crontab.guru. Вы можете автоматизировать резервное копирование с помощью механизма Systemd Timer, так как сервис Backup Wrapper устанавливается как systemd-служба. Для этого:
-
Создайте файл
backup-wrapper.timerв директории/etc/systemd/system/со следующим содержимым:[Unit] Description=Daily backup timer [Timer] OnCalendar=<schedule> Persistent=true RandomizedDelaySec=300 [Install] WantedBy=timers.targetЗдесь:
-
<schedule>— задайте расписание таймера в формате Calendar Events. Например:*-*-* 02:00:00— резервное копирование будет запускаться каждый день в два часа ночи.
-
-
Создайте файл
backup-wrapper.serviceв директории/etc/systemd/system/со следующим содержимым:[Unit] Description=Run backup via backup-wrapper [Service] Type=oneshot EnvironmentFile=/etc/backup-wrapper-v1.0.0/backup-client.env ExecStart=/usr/local/bin/backup-wrapper backup --wait User=backup-user StandardOutput=journal StandardError=journal -
Перезагрузите конфигурацию менеджера системы, выполнив команду:
sudo systemctl daemon-reload -
Включите Systemd Timer, выполнив команду:
sudo systemctl enable --now backup-wrapper.timer -
Проверьте, что Systemd Timer запущен и работает корректно, с помощью команды:
systemctl list-timers | grep backup
-
-
Проверьте, что задачи резервного копирования корректно создаются, с помощью следующих команд:
-
Вывести список последних задач:
curl -u admin:password http://localhost:8080/api/v1/jobs -
Вывести задачи со статусом failed:
curl -u admin:password http://localhost:8080/api/v1/jobs?status=failed
-
Была ли полезна эта страница?