pgBackRest настройка бекапов PostgreSQL

Официальный User Guige.
Параметры конфигурации.

Устанавливаем на сервере PostgreSQL pgbackrest:

sudo yum install pgbackrest

Выдаем права владения postgres:postgres на файл конфига /etc/pgbackrest.conf:

chown postgres:postgres /etc/pgbackrest.conf

Далее, в зависимости от конфигурации, либо создаем локальную директорию для бекапов с владельцем postgres:postgres, либо
монтируем шару (например, /mnt/pgbackup как будет описано далее в инструкции) с тем же владельцем postgres:postgres.


Создаем директорию под бекапы:

mkdir /mnt/pgbackup/pgbackrest

Редактируем файл конфига /etc/pgbackrest.conf указывая следующие настройки:

[global]
repo1-path=/mnt/pgbackup/pgbackrest
process-max=2

[prodname]
pg1-path=/postgres/data
retention-diff=3
retention-full=2
start-fast=y
stop-auto=y

Где [global] настройки всего pgbackrest, [prodname] имя stanza и настройки для бекапов.
В repo1-path необходимо указать путь к директории бекапов, в pg1-path директорию PGDATA PostgreSQL.
Более подробно о настройках и параметрах можно прочитать в user guide и доке по параметрам по ссылкам в начале статьи.

Важным параметром является process-max. Этот параметр указывает сколько ядер CPU использовать для выполнения сжатия и копирования файлов при бекапе. Правильно подобранный process-max позволяет в разы увеличить скорость бекапа. Его значение следует выставлять в зависимости от имеющегося количества ядер и имеющейся нагрузки на CPU, т.к. если установить, например, его равным всему имеющемуся числу ядер, то бекап начнет мешать работе PostgreSQL. Рекомендуется попробовать сначала выставить process-max в 1/3 часть доступных ядер CPU и дальше по нагрузке во время бекапов решать нужно ли его менять на другое значение.

Так же, можно тюнить параметр compress-level. Этот параметр имеет диапазон значений 0-9, по дефолту выставлен в 6. Он отвечает за степень сжатия бекапов, в настройках его можно указать так же отдельно для архивации WAL (см. User Guide). Тюнинг этого параметра позволяет влиять на размер бекапов в репозитории и скорость бекапирования — чем меньше степень сжатия тем больше места требуется под бекап и быстрее проходит процесс бекапа, и наоборот, при более сильно сжатии потребуется меньше места но больше времени на сам процесс бекапа.

Теперь правим конфиг postgresql.conf и перезапускаем PostgreSQL (после этого WAL будут архивироваться pgbackrest в специальную
директорию archive):

archive_command = 'pgbackrest --stanza=prodname archive-push %p'
archive_mode = on
max_wal_senders = 10
wal_level = replica
sudo /bin/systemctl restart postgresql-11

После этого создаем stanza и выполняем ее check проверку:

pgbackrest --stanza=prodname --log-level-console=info stanza-create
pgbackrest --stanza=prodname --log-level-console=info check

Если все ОК, выполняем full backup:

pgbackrest --stanza=prodname --type=full --log-level-console=info backup

Посмотреть имеющиеся бекапы можно выполнив команду:

pgbackrest info

Пример результата работы команды после выполнения нескольких бекапов:

stanza: prodname
status: ok
cipher: none
db (current)
wal archive min/max (11-1):
000000050000005C00000047/00000005000000C700000072

full backup: 20190828-123651F
timestamp start/stop: 2019-08-28 12:36:51 / 2019-08-28 13:42:48
wal start/stop: 000000050000005C00000047 /
000000050000005F0000004B
database size: 115.0GB, backup size: 115.0GB
repository size: 22.5GB, repository backup size: 22.5GB

full backup: 20190829-010002F
timestamp start/stop: 2019-08-29 01:00:02 / 2019-08-29 02:30:12
wal start/stop: 000000050000007A0000002D /
000000050000007D000000C0
database size: 150.4GB, backup size: 150.4GB
repository size: 29.4GB, repository backup size: 29.4GB

incr backup: 20190829-010002F_20190830-010001I
timestamp start/stop: 2019-08-30 01:00:01 / 2019-08-30 03:08:32
wal start/stop: 00000005000000B4000000FF /
00000005000000BA0000003F
database size: 219.1GB, backup size: 218.9GB
repository size: 42.5GB, repository backup size: 42.3GB
backup reference list: 20190829-010002F

Настраиваем раписание бекапов в cron, например так:

crontab -e
#pgbackrest backups
00 01 * * 3,6 pgbackrest --stanza=prodname --type=full backup
00 01 * * 0-2,4,5 pgbackrest --stanza=prodname --type=incr backup

Бекапы можно выполнять full (полный), diff (дифференциальный) и incr (инкрементальный).
Рекомендуется изучить и потестировать влияние на время выполнения/нагрузку на cpu/коэффициент сжатия параметра
конфига compress-level https://pgbackrest.org/configuration.html#section-general/option-compress-level, его так же можно задать и
для WAL https://pgbackrest.org/user-guide.html#quickstart/configure-archiving

0

Добавить комментарий

Ваш e-mail не будет опубликован.