Настройка создания и сохранения резервной копии
Порядок выполняемых действий:
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 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, то данная конфигурация для Вас будет иметь следующий вид:
|
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