User Tools

Site Tools


pgbackrest_в_alt_linux

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

pgbackrest_в_alt_linux.txt · Last modified: 2025/05/31 18:21 by keremet