Thank you for reading this post, don't forget to subscribe!
расширяю статью:
Официальный user guide https://pgbackrest.org/user-guide.html
Параметры конфигурации https://pgbackrest.org/configuration.html (крайне рекомендуется к изучению).
На сервере предварительно уже должен быть установлен PostgreSQL.
Установка
Устанавливаем на сервере PostgreSQL pgbackrest (в качестве примера устанавливаем на сервер CentOS 7):
sudo yum install pgbackrest
pgbackrest есть в репозитории PostgreSQL, если репозиторий не установлен, то выполеняем:
sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Если не удалось найти rpm пакет pgbackrest в репозиториях, то можно собрать бинарник самостоятельно, воспользовавшись инструкциями:
Скопировать бинарник и задать ему нужные права и создать необходимые директории с выдачей прав как написано здесь https://pgbackrest.org/user-guide-centos7.html#installation
Настройка
В зависимости от конфигурации, либо создаем локальную директорию для бекапов с владельцем postgres:postgres, либо монтируем шару (например, /mnt/pgbak как будет описано далее в инструкции) с тем же владельцем postgres:postgres.
Создаем директорию под бекапы:
mkdir /mnt/pgbak
chown postgres:postgres /mnt/pgbak
Создаем так же директорию под логи бекапов:
mkdir /mnt/pgbak/log
chown postgres:postgres /mnt/pgbak/log
Проверяем что на файл конфига /etc/pgbackrest.conf есть права для чтения у всех пользователей (так как владелец root), чтобы postgres мог им пользоваться, либо можно так же сделать владельцем этого файла postgres:postgres.
chown postgres:postgres /etc/pgbackrest.conf
Редактируем файл конфига /etc/pgbackrest.conf указывая следующие настройки:
1 2 3 4 5 6 7 8 9 10 11 12 |
[global] repo1-path=/mnt/pgbak process-max=2 log-path=/mnt/pgbak/log [prodname] pg1-path=/var/lib/pgsql/13/data retention-diff=3 retention-full=2 start-fast=y stop-auto=y |
Параметр process-max указывает сколько ядер CPU использовать для бекапа (сжатие и копирование файлов), по дефолту он выставлен в значение 1 (одно ядро). Для увеличения скорости бекапа, рекомендуется выставить значение параметра в зависимости от имеющегося на сервере количества ядер, но не указывать доступный максимум ядер, иначе это может повлиять на работу PostgreSQL. Значение так же стоит выставлять исходя из текущей утилизации CPU. Рекомендуется попробовать выставить process-max в треть от доступных ядер и постепенно увеличивать значение наблюдая общую утилизацию CPU во время бекапов. Корректно настроенный process-max позволяет значительно увеличить скорость бекапирования данных.
Где [global] настройки всего pgbackrest, [prodname] имя stanza и настройки для бекапов (имя придумываем сами, например, testprod).
В repo1-path необходимо указать путь к директории бекапов, в pg1-path директорию PGDATA PostgreSQL.
log-path указывает в какой директории хранить лог работы pgbackrest.
start-fast=y указывает на то, что при запуске бекапа необходимо сразу выполнить checkpoint и начать выполнение бекапа.
stop-auto=y означает что необходимо остановить предыдущий процесс бекапа, если таковой выполняется в данный момент (хотя предполагается что pgbackrest будет единственным средством которое будет выполнять бекапы на регулярной основе).
Более подробно о настройках и параметрах можно прочитать в user guide и доке по параметрам конфигурации.
Теперь правим конфиг postgresql.conf и перезапускаем PostgreSQL (после этого WAL будут архивироваться pgbackrest в специальную директорию archive):
1 2 3 4 5 6 |
archive_command = 'pgbackrest --stanza=testprod archive-push %p' archive_mode = on max_wal_senders = 10 wal_level = replica systemctl restart postgresql-13 |
После этого создаем stanza:
1 2 3 4 5 |
sudo -u postgres pgbackrest --stanza=testprod --log-level-console=info stanza-create 2021-07-19 15:08:35.517 P00 INFO: stanza-create command begin 2.34: --exec-id=10010-6babed2c --log-level-console=info --log-path=/mnt/pgbak/log --pg1-path=/var/lib/pgsql/13/data --repo1-path=/mnt/pgbak --stanza=testprod 2021-07-19 15:08:36.128 P00 INFO: stanza-create for stanza 'testprod' on repo1 2021-07-19 15:08:36.146 P00 INFO: stanza-create command end: completed successfully (629ms) |
И выполняем ее check проверку:
1 2 3 4 5 6 7 |
sudo -u postgres pgbackrest --stanza=testprod --log-level-console=info check 2021-07-19 15:10:08.151 P00 INFO: check command begin 2.34: --exec-id=10024-f2c75989 --log-level-console=info --log-path=/mnt/pgbak/log --pg1-path=/var/lib/pgsql/13/data --repo1-path=/mnt/pgbak --stanza=testprod 2021-07-19 15:10:09.798 P00 INFO: check repo1 configuration (primary) 2021-07-19 15:10:10.008 P00 INFO: check repo1 archive for WAL (primary) 2021-07-19 15:10:10.116 P00 INFO: WAL segment 000000010000000000000008 successfully archived to '/mnt/pgbak/archive/testprod/13-1/0000000100000000/000000010000000000000008-1ea23692e6832d1d14ee65ecba3b8883dc598092.gz' on repo1 2021-07-19 15:10:10.116 P00 INFO: check command end: completed successfully (1966ms) |
В результате в /mnt/pgbak будет создано дерево подкаталогов с бекапами инстанса и wal логами:
Выполнение тестового бекапа
Если все ОК, выполняем full backup (с выводом информации о ходе бекапа в консоль):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
sudo -u postgres pgbackrest --stanza=testprod --type=full --log-level-console=info backup 2021-07-19 15:27:46.295 P00 INFO: backup command begin 2.34: --exec-id=10189-c4e07cf5 --log-level-console=info --log-path=/mnt/pgbak/log --pg1-path=/var/lib/pgsql/13/data --process-max=2 --repo1-path=/mnt/pgbak --repo1-retention-diff=3 --repo1-retention-full=2 --stanza=testprod --start-fast --stop-auto --type=full 2021-07-19 15:27:47.007 P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes 2021-07-19 15:27:47.557 P00 INFO: backup start archive = 00000001000000000000000A, lsn = 0/A000060 2021-07-19 15:27:48.248 P01 INFO: backup file /var/lib/pgsql/13/data/base/16384/1255 (792KB, 2%) checksum 1056311d91314d248935005f80a63a0aa83961dc 2021-07-19 15:27:48.250 P02 INFO: backup file /var/lib/pgsql/13/data/base/14174/1255 (648KB, 4%) checksum 51c3c338b42f35a6a3cec09eb8ef6cc5670c11e7 2021-07-19 15:27:48.270 P02 INFO: backup file /var/lib/pgsql/13/data/base/1/1255 (648KB, 6%) checksum 0f67c09b8ffba5aeefaac035ded95960c1220597 2021-07-19 15:27:48.272 P01 INFO: backup file /var/lib/pgsql/13/data/base/14173/1255 (648KB, 7%) checksum 0f67c09b8ffba5aeefaac035ded95960c1220597 2021-07-19 15:27:48.287 P02 INFO: backup file /var/lib/pgsql/13/data/base/16384/2608 (616KB, 9%) checksum 1fe77d8c08a155c764a343981a91409f00f52f8b ... ... ... 2021-07-19 15:27:51.128 P02 INFO: backup file /var/lib/pgsql/13/data/base/1/14036 (0B, 100%) 2021-07-19 15:27:51.234 P01 INFO: backup file /var/lib/pgsql/13/data/base/1/14031 (0B, 100%) 2021-07-19 15:27:51.352 P02 INFO: backup file /var/lib/pgsql/13/data/base/1/14026 (0B, 100%) 2021-07-19 15:27:51.352 P00 INFO: full backup size = 33.9MB 2021-07-19 15:27:51.352 P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive 2021-07-19 15:27:51.562 P00 INFO: backup stop archive = 00000001000000000000000A, lsn = 0/A000138 2021-07-19 15:27:51.576 P00 INFO: check archive for segment(s) 00000001000000000000000A:00000001000000000000000A 2021-07-19 15:27:51.602 P00 INFO: new backup label = 20210719-152746F 2021-07-19 15:27:51.639 P00 INFO: backup command end: completed successfully (5344ms) 2021-07-19 15:27:51.639 P00 INFO: expire command begin 2.34: --exec-id=10189-c4e07cf5 --log-level-console=info --log-path=/mnt/pgbak/log --repo1-path=/mnt/pgbak --repo1-retention-diff=3 --repo1-retention-full=2 --stanza=testprod 2021-07-19 15:27:51.647 P00 INFO: expire command end: completed successfully (8ms) |
pgBackRest не будет выполнять бекап, если у него не будет возможности писать лог. По дефолту логи пишутся в директорию /var/log/pgbackrest, поэтому важно следить чтобы в /var/log всегда было доступное место. Можно переназначить директорию куда pgBackRest будет писать логи (как мы и сделали в данном случае), для этого необходимо создать директорию под логи, например, /mnt/pgbak/log и прописать это в конфиге /etc/pgbackrest.conf
В pgbackrest есть параметр checksum-page который позволяет включить/отключить проверку контрольных сумм страниц при выполнении бекапа.
Направляет pgBackRest на проверку контрольных сумм всех страниц данных при резервном копировании кластера. Этот параметр включается автоматически, когда в кластере включены контрольные суммы страниц данных.
Сбои при проверке контрольной суммы не прерывают резервное копирование. Скорее, предупреждения будут отправляться в журнал (и на консоль с настройками по умолчанию), а список недействительных страниц будет сохранен в манифесте резервной копии.
Посмотреть имеющиеся бекапы можно выполнив команду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
sudo -u postgres pgbackrest info stanza: testprod status: ok cipher: none db (current) wal archive min/max (13): 000000010000000000000008/00000001000000000000000A full backup: 20210719-152746F timestamp start/stop: 2021-07-19 15:27:46 / 2021-07-19 15:27:51 wal start/stop: 00000001000000000000000A / 00000001000000000000000A database size: 33.9MB, database backup size: 33.9MB repo1: backup set size: 4.2MB, backup size: 4.2MB |
Можно так же попробовать выполнить дифференциальный или инкрементальный бекапы, указав в —type=diff или —type=incr.
Файлы во время бекапа по умолчанию сжимаются и хранятся в сжатом виде, настройками сжатия можно управлять при помощи параметров:
-
https://pgbackrest.org/configuration.html#section-general/option-compress
-
https://pgbackrest.org/configuration.html#section-general/option-compress-level
-
https://pgbackrest.org/configuration.html#section-general/option-compress-level-network
-
https://pgbackrest.org/configuration.html#section-general/option-compress-type
Настройка расписания бекапов
Настраиваем расписание бекапов в cron, например так:
[codelanguage=»bash»]vi /etc/crontab
#pgbackrest backups
00 01 * * 6 sudo -u postgres pgbackrest —stanza=testprod —type=full backup
00 01 * * 0-5 sudo -u postgres pgbackrest —stanza=testprod —type=incr backup[/code]
Рекомендуется изучить и протестировать влияние на время выполнения/нагрузку на cpu/коэффициент сжатия параметра конфига compress-level https://pgbackrest.org/configuration.html#section-general/option-compress-level, его так же можно задать и для WAL https://pgbackrest.org/user-guide.html#quickstart/configure-archiving
Восстановление из бекапов (подготовка тестовых данных)
Для тестирования восстановления из бекапов создадим две базы test1 и test2.
1 2 |
create database test1; create database test2; |
Базы сейчас у нас пустые и одинакового размера.
Выполним full backup:
1 |
sudo -u postgres pgbackrest --stanza=testprod --type=full --log-level-console=info backup |
Создадим в каждой них одинаковую таблицу но заполним разным количеством данных чтобы они отличались по размеру:
БД test1:
1 2 3 4 5 6 7 8 9 10 11 |
CREATE TABLE journal ( id SERIAL, dt TIMESTAMP NOT NULL, level INTEGER, msg TEXT); CREATE INDEX ON journal(dt); INSERT INTO journal (dt, level, msg) SELECT g, random() * 6, md5(g::text) FROM generate_series('2015-01-01'::date, '2015-12-31'::date, '1 minute') as g; |
БД test2:
14:14:59. Предположим что после этого момента мы случайно удалили базу test2:
drop database test2;
Нам надо восстановиться из бекапа чтобы вернуть нашу базу обратно. Самый просто способ восстановления из бекапа это полное восстановление.
Для этого, сначала останавливаем PostgreSQL:
systemctl stop postgresql-13
Удаляем полностью содержимое нашей PGDATA /var/lib/pgsql/13/data, при этом сама директория data должна остаться, либо пересоздаем ее с теми же правами и владельцем:
rm -rf /var/lib/pgsql/13/data/*
Теперь в пустую PGDATA выполняем восстановление из бекапа, в данном случае будем восстанавливаться на точку во времени 14:14:59 и выводить процесс восстановления в консоль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
sudo -u postgres pgbackrest --stanza=testprod --type=time "--target=2021-07-22 14:14:59" --target-action=promote --log-level-console=info restore 2021-07-22 14:24:49.326 P00 INFO: restore command begin 2.34: --exec-id=15359-b1c9e39e --log-level-console=info --log-path=/mnt/pgbak/log --pg1-path=/var/lib/pgsql/13/data --process-max=2 --repo1-path=/mnt/pgbak --stanza=testprod --target="2021-07-22 14:14:59" --target-action=promote --type=time 2021-07-22 14:24:49.346 P00 INFO: repo1: restore backup set 20210722-140456F 2021-07-22 14:24:49.395 P01 INFO: restore file /var/lib/pgsql/13/data/base/16384/1255 (792KB, 1%) checksum 5870e7cb83a72d376f52735db638972fe1c1cfb3 2021-07-22 14:24:49.401 P02 INFO: restore file /var/lib/pgsql/13/data/base/17964/1255 (648KB, 2%) checksum 0f67c09b8ffba5aeefaac035ded95960c1220597 2021-07-22 14:24:49.409 P01 INFO: restore file /var/lib/pgsql/13/data/base/17963/1255 (648KB, 4%) checksum 0f67c09b8ffba5aeefaac035ded95960c1220597 2021-07-22 14:24:49.418 P02 INFO: restore file /var/lib/pgsql/13/data/base/14174/1255 (648KB, 5%) checksum f9959174b66b617a38ea1a3da8cebb637188a0fc 2021-07-22 14:24:49.425 P01 INFO: restore file /var/lib/pgsql/13/data/base/14173/1255 (648KB, 6%) checksum 0f67c09b8ffba5aeefaac035ded95960c1220597 2021-07-22 14:24:49.436 P02 INFO: restore file /var/lib/pgsql/13/data/base/1/1255 (648KB, 7%) checksum 0f67c09b8ffba5aeefaac035ded95960c1220597 ... ... ... 2021-07-22 14:24:54.551 P01 INFO: restore file /var/lib/pgsql/13/data/base/1/14036 (0B, 100%) 2021-07-22 14:24:54.660 P02 INFO: restore file /var/lib/pgsql/13/data/base/1/14031 (0B, 100%) 2021-07-22 14:24:54.761 P01 INFO: restore file /var/lib/pgsql/13/data/base/1/14026 (0B, 100%) 2021-07-22 14:24:54.761 P00 INFO: write updated /var/lib/pgsql/13/data/postgresql.auto.conf 2021-07-22 14:24:54.767 P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) 2021-07-22 14:24:54.770 P00 INFO: restore command end: completed successfully (5444ms) |
Кластер восстановлен, так же автоматически был создан пустой файл recovery.signal и сгенерированы параметры для восстановления в файле postgresql.auto.conf:
1 2 3 4 5 6 7 |
# Do not edit this file manually! # It will be overwritten by the ALTER SYSTEM command. # Recovery settings generated by pgBackRest restore on 2021-07-22 14:24:54 restore_command = 'pgbackrest --stanza=testprod archive-get %f "%p"' recovery_target_time = '2021-07-22 14:14:59' recovery_target_action = 'promote' |
Запускаем PostgreSQL:
systemctl start postgresql-13
PostgreSQL запустится, выполнит recovery при помощи WAL до указанной временной точки и promote, после восстановления проверяем что у нас сервер закончил восстановление по логам:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
2021-07-22 14:29:04.049 MSK [15387-3] app=[],client=[] [LOG: starting PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit 2021-07-22 14:29:04.049 MSK [15387-4] app=[],client=[] [LOG: listening on IPv4 address "0.0.0.0", port 5432 2021-07-22 14:29:04.049 MSK [15387-5] app=[],client=[] [LOG: listening on IPv6 address "::", port 5432 2021-07-22 14:29:04.052 MSK [15387-6] app=[],client=[] [LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2021-07-22 14:29:04.056 MSK [15387-7] app=[],client=[] [LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" 2021-07-22 14:29:04.061 MSK [15391-1] app=[],client=[] [LOG: database system was interrupted; last known up at 2021-07-22 14:04:57 MSK 2021-07-22 14:29:04.721 MSK [15391-2] app=[],client=[] [LOG: starting point-in-time recovery to 2021-07-22 14:14:59+03 2021-07-22 14:29:04.763 MSK [15391-3] app=[],client=[] [LOG: restored log file "000000010000000000000006" from archive 2021-07-22 14:29:04.898 MSK [15391-4] app=[],client=[] [LOG: redo starts at 0/6000028 2021-07-22 14:29:04.901 MSK [15391-5] app=[],client=[] [LOG: consistent recovery state reached at 0/60008C0 2021-07-22 14:29:04.901 MSK [15387-8] app=[],client=[] [LOG: database system is ready to accept read only connections 2021-07-22 14:29:04.994 MSK [15391-6] app=[],client=[] [LOG: restored log file "000000010000000000000007" from archive 2021-07-22 14:29:05.385 MSK [15391-7] app=[],client=[] [LOG: restored log file "000000010000000000000008" from archive … … … 2021-07-22 14:29:17.540 MSK [15391-40] app=[],client=[] [LOG: restored log file "000000010000000000000029" from archive 2021-07-22 14:29:17.826 MSK [15391-41] app=[],client=[] [LOG: recovery stopping before commit of transaction 944, time 2021-07-22 14:15:00.008621+03 2021-07-22 14:29:17.826 MSK [15391-42] app=[],client=[] [LOG: redo done at 0/29497E98 2021-07-22 14:29:17.826 MSK [15391-43] app=[],client=[] [LOG: last completed transaction was at log time 2021-07-22 14:12:06.775174+03 2021-07-22 14:29:17.897 MSK [15391-44] app=[],client=[] [LOG: selected new timeline ID: 2 2021-07-22 14:29:18.035 MSK [15391-45] app=[],client=[] [LOG: archive recovery complete 2021-07-22 14:29:18.055 MSK [15394-1] app=[],client=[] [LOG: checkpoint starting: end-of-recovery immediate wait 2021-07-22 14:29:19.654 MSK [15394-2] app=[],client=[] [LOG: checkpoint complete: wrote 41256 buffers (27.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.456 s, sync=0.099 s, total=1.601 s; sync files=81, longest=0.061 s, average=0.002 s; distance=578143 kB, estimate=578143 kB 2021-07-22 14:29:19.752 MSK [15387-9] app=[],client=[] [LOG: database system is ready to accept connections 2021-07-22 14:29:19.859 MSK [15441-1] app=[],client=[] [LOG: pg_cron scheduler started |
И выполнив команду:
select pg_is_in_recovery();
Которая должна вернуть false:
Файл recovery.signal при этом удалился автоматически.
Подключившись к кластеру видим что наша бд test2 на месте в том же состоянии как и была до удаления.
Восстановление дельты изменений (перезапись только изменившихся файлов)
Если объем кластера большой, то полное восстановление может занять много времени. Для того чтобы сэкономить время и не восстанавливать все файлы (ведь могла поменяться только из часть) для восстановления можно воспользоваться параметром —delta, в таком случае, будут восстановлены и заменены только изменившиеся файлы.
Итак, дропнем одну из наших баз, например, test1. Фиксируем текущее время — 14:41:32. И после этого выполняем:
drop database test1;
Чтобы ее вернуть, восстановимся из бекапа. Гасим postgresql:
systemctl stop postgresql-13
Но в этот раз удалять кластер не будем, а воспользуемся параметром —delta. Выполняем восстановление:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sudo -u postgres pgbackrest --stanza=testprod --delta --type=time "--target=2021-07-22 14:41:32" --target-action=promote --log-level-console=info restore root@postgres data$ sudo -u postgres pgbackrest --stanza=testprod --delta --type=time "--target=2021-07-22 14:41:32" --target-action=promote --log-level-console=info restore 2021-07-22 14:46:21.265 P00 INFO: restore command begin 2.34: --delta --exec-id=21471-146ebc99 --log-level-console=info --log-path=/mnt/pgbak/log --pg1-path=/var/lib/pgsql/13/data --process-max=2 --repo1-path=/mnt/pgbak --stanza=testprod --target="2021-07-22 14:41:32" --target-action=promote --type=time 2021-07-22 14:46:21.284 P00 INFO: repo1: restore backup set 20210722-140456F 2021-07-22 14:46:21.286 P00 INFO: remove invalid files/links/paths from '/var/lib/pgsql/13/data' 2021-07-22 14:46:21.390 P01 INFO: restore file /var/lib/pgsql/13/data/base/17963/1255 (648KB, 5%) checksum 0f67c09b8ffba5aeefaac035ded95960c1220597 2021-07-22 14:46:21.419 P02 INFO: restore file /var/lib/pgsql/13/data/base/17963/2838 (480KB, 13%) checksum 9e9555370a1a3ba38fb98f098ab93f0cbc0d6aaf 2021-07-22 14:46:21.438 P02 INFO: restore file /var/lib/pgsql/13/data/base/17963/2608 (456KB, 18%) checksum 94b3299cfe7b46f5dbe1cdb34ba8d53f8af4577b ... ... ... 2021-07-22 14:46:23.190 P02 INFO: restore file /var/lib/pgsql/13/data/base/17963/14026 (0B, 100%) 2021-07-22 14:46:23.424 P00 INFO: write updated /var/lib/pgsql/13/data/postgresql.auto.conf 2021-07-22 14:46:23.430 P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) 2021-07-22 14:46:23.432 P00 INFO: restore command end: completed successfully (2168ms) |
В этот раз была восстановлена только нужная часть файлов и заняло это меньше времени чем полное восстановление.
Запускаем PostgreSQL:
systemctl start postgresql-13
Весь процесс восстановления аналогичен предыдущему, после его завершения можем проверить что кластер у нас доступен на запись и база успешно восстановлена.
Восстановление только выбранных баз
pgBackRest позволяет при желании восстановить только выбранную(ые) базу(ы) кластера, либо исключить базу(ы) из восстановления. Подробнее в документации, мы же, в качестве примера, дропнем обе базы test1 и test2 и восстановим только базу test1.
Проверяем время — 14:56:54.
Выполняем дроп обеих баз данных:
drop database test1;
drop database test2;
Останавливаем PostgreSQL:
systemctl stop postgresql-13
Выполняем восстановление кластера и одной базы test1 (используем —delta для более быстрого восстановления):
sudo -u postgres pgbackrest --stanza=testprod --delta --db-include=test1 --type=time "--target=2021-07-22 14:56:54" --target-action=promote --log-level-console=info restore
Запускаем PostgreSQL и ждем завершения наката WAL логов:
systemctl start postgresql-13
Подключаемся к кластеру и проверяем что база test1 на месте и к ней можно подключиться и работать с ней.
При этом мы видим так же и базу test2, но при подключении к ней мы получим ошибку о том что объект не существует. Дело в том что pgBackRest восстанавливает все базы, но данные заливаются только в те что мы указали в данном варианте восстановления. Поэтому теперь, последним шагом, необходимо выполнить дроп базы пустышки test2:
drop database test2;