pgBackRest
pgBackRest — инструмент для резервного копирования PostgreSQL с поддержкой S3 для ОС Linux.
Настроить pgBackRest
- Настройте доступ к S3.
- Настройте PostgreSQL для архивирования WAL.
- Установите pgBackRest.
- Создайте конфигурацию и настройте бэкапирование.
1. Настроить доступ к S3
Настроить доступ может Владелец аккаунта или пользователь с ролью iam_admin.
- Создайте сервисного пользователя с ролью с доступом в S3. Если вы создали сервисного пользователя с ролью
object_storage_userилиs3.bucket.user, в бакете должна быть настроена политика доступа. - Выдайте пользователю S3-ключ.
2. Настроить PostgreSQL для архивирования WAL
-
Откройте CLI.
-
Откройте файл
postgresql.conf:sudo nano /etc/postgresql/16/main/postgresql.conf -
Установите значения параметров:
wal_level = replica
archive_mode = on
archive_command = 'pgbackrest --stanza=main archive-push %p'
max_wal_senders = 3 -
Удалите
#перед каждым из перечисленных параметров и комментарии после них. -
Чтобы выйти из текстового редактора nano с сохранением изменений, нажмите Ctrl+Х → Y+Enter.
-
Примените изменения:
sudo systemctl restart postgresql
3. Установить pgBackRest
Установите pgBackRest:
sudo apt install -y pgbackrest
4. Создать конфигурацию и настроить бэкапирование
-
Cоздайте каталог конфигураций:
sudo mkdir -p /etc/pgbackrest -
Откройте конфигурационный файл
/etc/pgbackrest.conf:nano /etc/pgbackrest.conf -
Заполните файл
/etc/pgbackrest.conf:[main]
pg1-path=/var/lib/postgresql/<postgresql_version>/main
[global]
repo1-type=s3
repo1-s3-endpoint=<s3_domain>
repo1-s3-bucket=<bucket_name>
repo1-s3-region=<pool>
repo1-s3-key=<access_key>
repo1-s3-key-secret=<secret_key>
repo1-path=<path_to_repository>
repo1-retention-full=<number_of_backups>
log-level-console=infoУкажите:
<postgresql_version>– каталог данных PostgreSQL;<s3_domain>– домен S3 API, зависит от пула, в котором находится S3;<bucket_name>– название бакета S3. У бакета должна быть vHosted-адресация;<pool>– пул, в котором находится S3;<access_key>– начение поля Access key из S3-ключа;<secret_key>– значение поля Secret key из S3-ключа;<path_to_repository>– корень репозитория pgBackRest;<number_of_backups>– количество о дновременно хранящихся бэкапов.
-
Чтобы выйти из текстового редактора nano с сохранением изменений, нажмите Ctrl+Х → Y+Enter.
-
Сделайте владельцем конфигурации пользователя
postgres:sudo chown -R postgres:postgres /var/lib/pgbackrest
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf -
Инициализируйте
stanza– логическую единицу для pgBackRest, которая объединяет кластер и репозиторий:sudo -u postgres pgbackrest --stanza=main --log-level-console=info stanza-create
sudo -u postgres pgbackrest --stanza=main --log-level-console=info checkЗдесь:
stanza-create— проверяет каталог данных и репозиторий, создает метаданные для бэкапа;check— подтверждает корректность настройки.
Работа с pgBackRest
Создать полный бэкап
-
Откройте CLI.
-
Создайте по лный бэкап:
sudo -u postgres pgbackrest --stanza=main --type=full backup
Создать инкрементальный бэкап
Для выполнения инкрементального бэкапа должен быть сделан хотя бы один полный бэкап.
-
Откройте CLI.
-
Создайте инкрементальный бэкап:
sudo -u postgres pgbackrest --stanza=main --type=incr --log-level-console=info backup
Посмотреть информацию о сохраненных бэкапах
-
Откройте CLI.
-
Посмотрите информацию о сохраненных бэкапах:
sudo -u postgres pgbackrest --stanza=main info
Восстановить кластер из бэкапа
-
Откройте CLI.
-
Перед восстановлением кластера остановите работу PostgreSQL:
sudo systemctl stop postgresql -
Восстановите бэкап — автоматически выбирается последний созданный бэкап:
sudo -u postgres pgbackrest --stanza=main restore -
Запустите работу PostgreSQL:
sudo systemctl start postgresql -
Проверьте список кластеров:
sudo pg_lsclusters -
Проверьте список баз данных:
sudo -u postgres psql -c "\l"