Sign inSign up

grufos/pgprorestore

By grufos

Updated over 2 years ago

Докер предназначенный для восстановления кластера из бэкапа созданного утилитой pg_probackup

Image
0

804

grufos/pgprorestore repository overview

docker-pgprorestore

Докер предназначенный для восстановления кластера из бэкапа созданного утилитой 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. Примеры файлов чуть ниже...

Каждый запуск контейнера запускает восстановление кластера из бэкапа. Вариант восстановления описывается переменными окружения. Переменные окружения контейнера

Переменные влияющие на работу скриптов по бэкапам:

NameDefault valueDescription
BACKUP_PATH/mnt/pgbakКаталог используемый утилитой pg_probackup для хранения всех бэкапов
BACKUP_THREADS4На сколько потоков можно параллелить бэкап/рестор процесс
TARGET_TIMEвосстановление на указанную точку во времени, к примеру TARGET_TIME: "2020-10-22 06:00:00"
TARGET_IDвосстановление на указанный срез в архиве, к примеру TARGET_ID: "QILQ45"

Если переменные TARGET_TIME или TARGET_ID не указаны, то будет выполнено восстановление на самое последнее состояние.

Переменные для отправки писем:

NameDefault valueDescription
EMAILTOНа какой адрес отправлять почтовые сообщения
EMAIL_SERVERИмя почтового сервера для отправки писем
EMAIL_HOSTNAMEnoreplay@.ruимя отправителя писем
EMAIL_SENDyesОтправку писем можно отменить указав no

Переменные используются при работе скрипта show.sh

Контейнер ожидает следующие примапленные каталоги:

NameDescription
/var/lib/postgresql/dataкаталог с данными кластера
/mnt/pgbakкаталог для бэкапов кластера

Пример docker-compose файла restore-service.yml

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 (самое последнее состояние)

Пример docker-compose файла restore-service-show.yml

Для запуска 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"

Старт docker-compose

Такие управляющие файлы рекомендуется запускать командами restore_start.sh:

#!/bin/bash
clear
docker-compose -f "restore-service.yml" up --build "$@"

Tag summary

Content type

Image

Digest

sha256:5341edf7a

Size

48 MB

Last updated

over 2 years ago

docker pull grufos/pgprorestore