====== 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