====== pgBackRest в ALT Linux ====== ==== Установка PostgreSQL, создание базы, заполнение ее тестовыми данными ==== Для тестирования потребуется PostgreSQL, поэтому установим его. sudo apt-get update sudo apt-get install postgresql15-1C-contrib sudo /etc/init.d/postgresql initdb sudo systemctl enable --now postgresql.service Убедиться, что PostgreSQL запущен $ ps -HfC postgres UID PID PPID C STIME TTY TIME CMD postgres 4562 1 0 19:39 ? 00:00:00 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432 postgres 4563 4562 0 19:39 ? 00:00:00 postgres: logger postgres 4564 4562 0 19:39 ? 00:00:00 postgres: checkpointer postgres 4565 4562 0 19:39 ? 00:00:00 postgres: background writer postgres 4567 4562 0 19:39 ? 00:00:00 postgres: walwriter postgres 4568 4562 0 19:39 ? 00:00:00 postgres: autovacuum launcher postgres 4569 4562 0 19:39 ? 00:00:00 postgres: logical replication launcher Запуск psql sudo su - -c psql -s /bin/bash postgres Создание таблицы из 10000 строк create table t1 as select i, i*10 j from generate_series(1, 10000) i; ==== Установка pgBackRest, создание резервной копии ==== sudo apt-get install pgbackrest sudo mkdir /etc/pgbackrest/ Создать конфигурационный файл pgBackRest (**/etc/pgbackrest/pgbackrest.conf**) с содержимым [srv1] pg1-path=/var/lib/pgsql/data/ pg1-port=5432 [global] repo1-path=/var/lib/pgsql/backups/pgbackrest log-path=/var/lib/pgsql/backups/pgbackrest/log start-fast=y repo1-retention-full=2 Залогиниться под пользователем postgres sudo su - -s /bin/bash postgres Создать каталоги для логов pgbackrest и резервных копий, которые он будет создавать mkdir -p /var/lib/pgsql/backups/pgbackrest/log Создать станзу, соответствующую локально установленному PostgreSQL pgbackrest --stanza=srv1 stanza-create Изменить значения настроек archive_mode и archive_command. Убедиться, что настройка wal_level имеет значение не ниже "replica", а max_wal_senders не меньше 3. echo "alter system set archive_mode = on; alter system set archive_command = 'pgbackrest --stanza=srv1 archive-push %p'; show wal_level; show max_wal_senders;"| psql Перезапустить PostgreSQL для применения настроек. pg_ctl -w -D /var/lib/pgsql/data restart Убедиться, что все готово для резервного копирования: команда pgbackrest check не должна выдать сообщений об ошибках pgbackrest check --stanza=srv1 Создать полный бэкап. pgbackrest backup --stanza=srv1 --type=full Создать инкрементальный бэкап pgbackrest backup --stanza=srv1 --type=incr Посмотреть информацию об имеющихся резервных копиях pgbackrest --stanza=srv1 info ==== Восстановление ==== Остановить PostgreSQL sudo systemctl stop postgresql.service Удалить каталог с его данными sudo rm -rf /var/lib/pgsql/data Выполнить восстановление из последней резервной копии sudo su - -c "pgbackrest --stanza=srv1 restore" -s /bin/bash postgres Запустить PostgreSQL sudo systemctl start postgresql.service Подробнее: https://pgbackrest.org/user-guide.html