Докер предназначенный для восстановления кластера из бэкапа созданного утилитой pg_probackup
804
Докер предназначенный для восстановления кластера из бэкапа созданного утилитой pg_probackup
Докер основан на образе debian https://hub.docker.com/_/debian
Для удобства работы с восстановлением бэкапов создан отдельный контейнер содержащий внутри 2 sh файла.
restore.sh - восстанавливает кластер из бэкапа (основная функция контейнера)
show.sh - показывает какие бэкапы есть.
Для запуска дополнительного скрипта можно использовать команду:
$ docker run --rm -v "/mnt/pgbak2/:/mnt/pgbak/" --entrypoint=show.sh temp_pgprobackup_restore
но, гораздо удобнее использовать docker-compose. Примеры файлов чуть ниже...
Каждый запуск контейнера запускает восстановление кластера из бэкапа. Вариант восстановления описывается переменными окружения. Переменные окружения контейнера
Переменные влияющие на работу скриптов по бэкапам:
| Name | Default value | Description |
|---|---|---|
| BACKUP_PATH | /mnt/pgbak | Каталог используемый утилитой pg_probackup для хранения всех бэкапов |
| BACKUP_THREADS | 4 | На сколько потоков можно параллелить бэкап/рестор процесс |
| TARGET_TIME | восстановление на указанную точку во времени, к примеру TARGET_TIME: "2020-10-22 06:00:00" | |
| TARGET_ID | восстановление на указанный срез в архиве, к примеру TARGET_ID: "QILQ45" |
Если переменные TARGET_TIME или TARGET_ID не указаны, то будет выполнено восстановление на самое последнее состояние.
Переменные для отправки писем:
| Name | Default value | Description |
|---|---|---|
| EMAILTO | На какой адрес отправлять почтовые сообщения | |
| EMAIL_SERVER | Имя почтового сервера для отправки писем | |
| EMAIL_HOSTNAME | noreplay@.ru | имя отправителя писем |
| EMAIL_SEND | yes | Отправку писем можно отменить указав no |
Переменные используются при работе скрипта show.sh
Контейнер ожидает следующие примапленные каталоги:
| Name | Description |
|---|---|
| /var/lib/postgresql/data | каталог с данными кластера |
| /mnt/pgbak | каталог для бэкапов кластера |
version: '3.5'
services:
pgprobackup_restore:
build:
context: ./docker-pgprorestore
dockerfile: Dockerfile
volumes:
- "/var/lib/pgsql/13_1/data:/var/lib/postgresql/data"
- "/mnt/pgbak2/:/mnt/pgbak/"
environment:
TZ: "Europe/Moscow"
BACKUP_THREADS: "4"
# восстановление на указанную точку во времени
# TARGET_TIME: "2020-10-22 06:00:00"
# восстановление на указанный срез в архиве
# TARGET_ID: "QILQ45"
# если ни один из этих параметров не указан, то восстановление выполняется на состояние - latest (самое последнее состояние)
Для запуска show.sh скрипта в этом контейнере рекомендуется использовать отдельный compose файл:
version: '3.5'
services:
pgprorestore_show:
build:
context: ./docker-pgprorestore
dockerfile: Dockerfile
volumes:
- "/mnt/pgbak2/:/mnt/pgbak/"
environment:
TZ: "Europe/Moscow"
EMAILTO: "DBA-PostgreSQL@my_name.ru"
EMAIL_SERVER: "mail.name.ru"
EMAIL_HOSTNAME: "noreplay@my_host.ru"
EMAIL_SEND: "no"
entrypoint: "/usr/local/bin/show.sh"
Такие управляющие файлы рекомендуется запускать командами restore_start.sh:
#!/bin/bash
clear
docker-compose -f "restore-service.yml" up --build "$@"
Content type
Image
Digest
sha256:5341edf7a…
Size
48 MB
Last updated
over 2 years ago
docker pull grufos/pgprorestore