Добавить в корзинуПозвонить
Найти в Дзене
DeSoft.ru

Настраиваем бэкапы кластера PostgreSQL в autobase

Текущая версия autobase в ui консоли не поддерживает управление резервным копированием, поэтому настроим эту опцию через предлагаемые конфигурации. 🔹 Ставим MinIO s3 локально или арендуем хранилище с большим диском у облачных провайдеров. Для поддержки https протокола подключим самоподписанный сертификат. docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-v ~/autobase/minio/data:/data \
-v ~/autobase/minio/certs:/certs \
-e "MINIO_ROOT_USER=demouser" \
-e "MINIO_ROOT_PASSWORD=demouser" \
-e "MINIO_SCHEME=https" \
-e "SSL_CERT_FILE=/certs/public.crt" \
quay.io/minio/minio server /data --console-address ":9001" /data --certs-dir /certs 🔹 Идем в веб панель на порт 9001 🔹 Клонируем ветку актуального релиза autobase git clone --branch 2.1.0 --single-branch https://github.com/vitabaks/autobase.git 🔹 Настраиваем pgbackrest под s3 Для включения бэкапов нужно внести корректировки в конфигурацию вспомогательного образа automation, который ранее подтягива
Оглавление

Текущая версия autobase в ui консоли не поддерживает управление резервным копированием, поэтому настроим эту опцию через предлагаемые конфигурации.

📦 Подготавливаем s3 хранилище

🔹 Ставим MinIO s3 локально или арендуем хранилище с большим диском у облачных провайдеров. Для поддержки https протокола подключим самоподписанный сертификат.

docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-v ~/autobase/minio/data:/data \
-v ~/autobase/minio/certs:/certs \
-e "MINIO_ROOT_USER=demouser" \
-e "MINIO_ROOT_PASSWORD=demouser" \
-e "MINIO_SCHEME=https" \
-e "SSL_CERT_FILE=/certs/public.crt" \
quay.io/minio/minio server /data --console-address ":9001" /data --certs-dir /certs

🔹 Идем в веб панель на порт 9001

  • Создаем bucket autobase для хранения резервных копий.
  • Создаем Access Key.
  • В настройках прописываем регион хранилища.

⚒️ Настраиваем и пересобираем образ automation

🔹 Клонируем ветку актуального релиза autobase

git clone --branch 2.1.0 --single-branch https://github.com/vitabaks/autobase.git

🔹 Настраиваем pgbackrest под s3

Для включения бэкапов нужно внести корректировки в конфигурацию вспомогательного образа automation, который ранее подтягивался из dockerhub уже в готовом виде.

vi ./autobase/automation/vars/main.yml

❗️❗️ pgbackrest требует работу через https. Регион хранилища также должен быть задан.

Находим секцию pgbackrest и заменяем значения на заготовленную конфигурацию для бэкапов в MinIO S3 из документации. Не забываем внести свои значения параметров доступа к развернутому ранее MinIO.

# pgBackRest
pgbackrest_install: true # or 'true' to install and configure backups using pgBackRest
pgbackrest_install_from_pgdg_repo: true # or 'false'
pgbackrest_stanza: "{{ patroni_cluster_name }}" # specify your --stanza
pgbackrest_repo_type: "s3"
# or "s3", "gcs", "azure"
pgbackrest_repo_host: "" # dedicated repository host (optional)
pgbackrest_repo_user: "" # if "repo_host" is set (optional)
pgbackrest_conf_file: "/etc/pgbackrest/pgbackrest.conf"
# config https://pgbackrest.org/configuration.html
pgbackrest_conf:
global:
# [global] section
- { option: "log-level-file", value: "detail" }
- { option: "log-path", value: "/var/log/pgbackrest" }
- { option: "repo1-type", value: "{{ pgbackrest_repo_type | lower }}" }
- { option: "repo1-path", value: "/pgbackrest" }
# logical path in bucket
- { option: "repo1-s3-endpoint", value: "https://192.168.1.135:9001" } # change this value
- { option: "repo1-s3-key", value: "GzYy8dfBuzsk6MThj2RO" } # change this value
- { option: "repo1-s3-key-secret", value: "GzcS6Dot3vIkwQruXxPL3a9tV1BT6fDRIS4vonwn" } # change this value
- { option: "repo1-s3-bucket", value: "autobase" } # change this value
- { option: "repo1-s3-region", value: "desoft-local-region" } # change this value
- { option: "repo1-s3-uri-style", value: "path" }
- { option: "repo1-s3-verify-tls", value: "n" }
- { option: "repo1-retention-full", value: "4" }
- { option: "repo1-retention-archive", value: "4" }
- { option: "archive-check", value: "y" }
- { option: "archive-copy", value: "n" }
- { option: "archive-async", value: "y" }
- { option: "archive-get-queue-max", value: "1GiB" }
# - { option: "archive-push-queue-max", value: "100GiB" }
- { option: "spool-path", value: "/var/spool/pgbackrest" }
- { option: "repo1-bundle", value: "y" }
- { option: "repo1-block", value: "y" }
- { option: "start-fast", value: "y" }
- { option: "stop-auto", value: "y" }
- { option: "link-all", value: "y" }
- { option: "resume", value: "n" }
- { option: "backup-standby", value: "y" }
# when set to 'y', standby servers will be automatically added to >
- { option: "process-max", value: "2" }

Устанавливаем расписание бэкапов в секции pgbackrest_cron_jobs (по умолчанию еженедельные полные бэкапы).

# By default, the cron jobs is created on the database server. # If 'repo_host' is defined, the cron jobs will be created on the pgbackrest server.
pgbackrest_cron_jobs:
- name: "pgBackRest: Full Backup"
file: "/etc/cron.d/pgbackrest-{{ patroni_cluster_name }}"
user: "postgres"
minute: "00"
hour: "3"
day: "*"
month: "*"
weekday: "0"
job: "if [ $(psql -tAXc 'select pg_is_in_recovery()') = 'f' ]; then pgbackrest --stanza={{ pgbackrest_stanza }} --type=full backup; fi"
- name: "pgBackRest: Diff Backup"
file: "/etc/cron.d/pgbackrest-{{ patroni_cluster_name }}"
user: "postgres"
minute: "00"
hour: "3"
day: "*"
month: "*"
weekday: "1-6"
job: "if [ $(psql -tAXc 'select pg_is_in_recovery()') = 'f' ]; then pgbackrest --stanza={{ pgbackrest_stanza }} --type=diff backup; fi"

Указываем pgbackrest как метод создания реплик patroni.

patroni_create_replica_methods:
- pgbackrest
# - wal_g
# - pg_probackup
# - basebackup

🔹 Собираем локальный образ automation

cd ./autobase
docker build -t automation-pgrest:latest -f ./automation/Dockerfile .

🚀 Запускаем консоль autobase

🔹 Указываем в переменной окружения консоли PG_CONSOLE_DOCKER_IMAGE собранный выше локальный образ automation и запускаем.

docker run -d --name autobase-pgrest-console \
  --publish 80:80 \
  --publish 8080:8080 \
  --env PG_CONSOLE_API_URL=http://192.168.1.135:8080/api/v1 \
  --env PG_CONSOLE_AUTHORIZATION_TOKEN=secret_token \
  --env PG_CONSOLE_DOCKER_IMAGE=automation-pgrest:latest \
  --volume console_postgres:/var/lib/postgresql \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --volume /tmp/ansible:/tmp/ansible \
  --restart=unless-stopped \
  autobase/console:latest

🔹 Создаем и разворачиваем кластер согласно инструкции из первой части.

pgbackrest устанавливается как на основной хост кластера, так и на реплики. Для проверки и отладки работы программы можно отслеживать логи по пути, указанному в конфигурационном файле main.yml собственного образа automation, { option: "log-path", value: "/var/log/pgbackrest" }.

📌 Согласно информации от разработчика, ведется работа над Expert mode, который раскроет дополнительные опции в веб интерфейсе autobase, включая управление резервным копированием. Ожидаем появления нового режима в будущих релизах.