Table of Contents
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