Настройка создания и сохранения резервной копии

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

1) Настроить PostgreSQL

2) Дать пользователю проверку доступа типа trust в /etc/postgres/version/main/pg_hba.conf:

sudo nano /etc/postgresql/"номер_версии"/main/pg_hba.conf

Напротив имени пользователя в графе METHOD изменить тип проверки на trust:

# Database administrative login by Unix domain socket
local   all             postgres                                trust
Для сохранения файла используйте Ctrl+o → Enter → Ctrl+x.

Перезагрузить PostgreSQL:

systemctl restart postgresql

3) Перейти в директорию /opt/echelon/komrad/bin:

cd /opt/echelon/komrad/bin

4) Настроить хранилище minio (komrad-s3). После установки хранилище запускается автоматически, проверить его статус можно с помощью команды:

systemctl status komrad-s3

Если сервис не запущен, то можно создать сервер в репозитории с помощью следующей команды:

./komrad-s3 server /var/lib/postgresql/version/main

Или запустить шлюз объектного хранилища s3 с помощью команды:

./komrad-s3 gateway s3 "конечная точка хранилища"

5) Настроить конфигурацию политики и пользователя:

  • Проверить адрес консоли управления хранилищем можно с помощью команды:

systemctl status komrad-s3
  • При переходе по данному адресу открывается интерфейс взаимодействия с хранилищем. Авторизация проходит по логину - komrad-s3 и паролю - komrad-s3-password

  • Настройка политики находится на вкладке "Пользователи", далее Policies. Создание политики осуществяется с помощью кнопки "Create Policy". В открывшемся окне необходимо придумать название политики, добавить следующую конфигурацию и сохранить:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteBucketPolicy",
                "s3:GetBucketPolicy",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:PutBucketPolicy"
            ],
            "Resource": [
                "arn:aws:s3:::имя контейнера"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::имя контейнера/*"
            ]
        }
    ]
}
  • Для активации политики необходимо создать пользователя во вкладке Users с помощью нажатия кнопки "Create User", придумать логин (он является ключом доступа accesskey) и пароль (он является секретным ключом secretkey), выбрать созданную политику и сохранить

6) Настроить агента хранилища (komrad-s3-agent)

  • Указать псевдоним хранилища с помощью команды:

./komrad-s3-admin alias set "псевдоним хранилища" "адрес хранилища s3" "ключ доступа (accesskey)" "секретный ключ (secretkey)"

Если Вы создали пользователя с именем user и паролем pass и хотите подключить хранилище, находящееся на локальном компьютере по порту 9050, выдав ему псевдоним myminio, то данная команда будет иметь вид:

./komrad-s3-admin alias set myminio localhost:9050 user pass
  • Создать контейнер для сбора резервных копий:

./komrad-s3-admin mb "псевдоним хранилища/имя контейнера"
  • Проверить, создался ли контейнер:

./komrad-s3-admin ls "псевдоним хранилища/"

7) Создать файл в домашнем репозитории пользователя postgres .walg.json:

sudo nano "домашний репозиторий/".walg.json

Добавить в файл содержимое:

{
  "WALE_S3_PREFIX": "s3://имя контейнера",
  "AWS_ACCESS_KEY_ID": "имя пользователя из п.5",
  "AWS_ENDPOINT": "http://адрес хранилища",
  "AWS_S3_FORCE_PATH_STYLE": "true",
  "AWS_SECRET_ACCESS_KEY": "пароль пользователя из п.5",
  "PGDATA": "/var/lib/postgresql/version/main",
  "PGHOST": "/var/run/postgresql/",
  "WALG_UPLOAD_CONCURRENCY": "2",
  "WALG_DOWNLOAD_CONCURRENCY": "2",
  "WALG_UPLOAD_DISK_CONCURRENCY": "2",
  "WALG_DELTA_MAX_STEPS": "7",
  "WALG_COMPRESSION_METHOD": "zstd"
}

Если имя Вашего пользователя user и пароль pass, имя созданного контейнера backet, хранилище находится на локальном компьютере по порту 9050, а версия PostgeSQL является 11, то данная конфигурация для Вас будет иметь следующий вид:

{
  "WALE_S3_PREFIX": "s3://backet",
  "AWS_ACCESS_KEY_ID": "user",
  "AWS_ENDPOINT": "http://localhost:9050",
  "AWS_S3_FORCE_PATH_STYLE": "true",
  "AWS_SECRET_ACCESS_KEY": "pass",
  "PGDATA": "/var/lib/postgresql/11/main",
  "PGHOST": "/var/run/postgresql/",
  "WALG_UPLOAD_CONCURRENCY": "2",
  "WALG_DOWNLOAD_CONCURRENCY": "2",
  "WALG_UPLOAD_DISK_CONCURRENCY": "2",
  "WALG_DELTA_MAX_STEPS": "7",
  "WALG_COMPRESSION_METHOD": "zstd"
}

8) Сделать резервную копию и загрузить в хранилище с помощью команды:

./komrad-backup postgres backup-push /var/lib/postgresql/version/main

9) Для восстановления резервной копии необходимо выполнить следующие шаги:

  • Посмотреть список резервных копий с помощью команды:

./komrad-backup postgres backup-list
  • Скачать нужную резервную копию в любую директорию:

./komrad-backup postgres backup-fetch /home/share/ "название резервной копии"
  • Перенести файлы в репозиторий /var/lib/postgresql/version/, удалив файл /var/lib/postgresql/version/main/backup_label

  • Перезагрузить сервис PostgreSQL:

systemctl restart postgresql