Примечание
В то время как файлы резервных копий могут передаваться из разных источников (файловая система, S3 или SSH SFTP), восстановление каталога данных PGDATA
сервера Postgres Pro производится в локальную файловую систему.
Чтобы восстановить кластер баз данных из резервной копии, выполните команду restore как минимум со следующими параметрами:
pg_probackup3 restore -Bкаталог_копий
--instance=имя_экземпляра
-iид_резервной_копии
Здесь:
каталог_копий
— каталог, в котором хранятся все файлы резервных копий и метаданные.имя_экземпляра
— имя экземпляра резервной копии кластера, который будет восстановлен.ид_резервной_копии
определяет, из какой резервной копии будет восстановлен кластер.
Если вы восстанавливаете копию ARCHIVE или выполняете восстановление PITR, pg_probackup3 создаёт файл конфигурации восстановления после копирования всех файлов данных в целевой каталог. Этот файл включает необходимые для восстановления параметры, за исключением пароля, заданного в primary_conninfo; если он требуется, его нужно дополнительно задать вручную или воспользоваться параметром --primary-conninfo
. pg_probackup3 сохраняет эти параметры в файле probackup_recovery.conf
в каталоге данных и подключает его в postgresql.auto.conf
.
Если восстанавливалась копия типа STREAM, восстановление завершается сразу, и кластер возвращается в согласованное состояние на момент времени, в который была сделана резервная копия. Для копий типа ARCHIVE Postgres Pro воспроизводит все имеющиеся в архиве сегменты WAL, в результате чего восстанавливается самое последнее состояние кластера на текущей линии времени. Это поведение можно изменить, определив параметры точки восстановления для команды restore
как описывается в «Выполнение восстановления на момент времени (PITR)».
Если кластер, подлежащий восстановлению, содержит табличные пространства, pg_probackup3 по умолчанию восстанавливает их в исходные расположения. Чтобы сменить расположения табличных пространств, воспользуйтесь параметром --tablespace-mapping
/-T
. В противном случае при восстановлении кластера на том же сервере произойдёт ошибка, если эти табличные пространства будут использоваться, так как восстанавливаемые данные нужно будет записать в те же каталоги.
Используя параметр --tablespace-mapping
/-T
, вы должны задать абсолютные пути к старому и новому каталогу табличного пространства. Если путь содержит знак равно (=
), экранируйте его обратной косой чертой. Данный параметр может указываться неоднократно для перемещения нескольких табличных пространств. Например:
pg_probackup3 restore -Bкаталог_копий
--instanceимя_экземпляра
-Dкаталог_данных
-j 4 -iид_резервной_копии
-T каталог_табл_пространства1=новый_каталог_табл_пространства1
-T каталог_табл_пространства2=новый_каталог_табл_пространства2
Можно восстанавливать определённые базы данных без дополнительной подготовки с помощью параметров частичного восстановления с командой restore и OID этих баз.
Чтобы восстановить только определённые базы данных, выполните команду restore со следующими параметрами:
pg_probackup3 restore -Bкаталог_копий
--instance=имя_экземпляра
--db-include-oid=dboid
Параметр --db-include-oid
можно указывать многократно. Например, чтобы восстановить только базы db1
и db2
с OID dboid1
и dboid2
, соответственно, выполните следующую команду:
pg_probackup3 restore -Bкаталог_копий
--instance=имя_экземпляра
--db-include-oid=dboid1 --db-include-oid=dboid2
Чтобы исключить одну или несколько баз из числа восстанавливаемых, используйте параметр --db-exclude-oid
:
pg_probackup3 restore -Bкаталог_копий
--instance=имя_экземпляра
--db-exclude-oid=dboid
Параметр --db-exclude-oid
можно указывать многократно. Например, чтобы исключить из числа восстанавливаемых только базы db1
и db2
с OID dboid1
и dboid2
, соответственно, выполните следующую команду:
pg_probackup3 restore -Bкаталог_копий
--instance=имя_экземпляра
--db-exclude-oid=dboid1 --db-exclude-oid=dboid2
Примечание
После успешного запуска кластера Postgres Pro восстановленные определения исключённых баз данных можно удалить с помощью команды DROP DATABASE.
Чтобы максимально быстро разделить один кластер, содержащий несколько баз данных, на разные кластеры, можно выполнить частичное восстановление исходного кластера в виде ведомого, передав ключ --restore-as-replica
для определённых баз данных.
Примечание
Базы template0
и template1
восстанавливаются всегда.
Если вы настраивали непрерывное архивирование WAL до создания резервных копий, вы можете восстановить состояние кластера на любой момент времени (до заданной точки восстановления), используя с командой restore параметры точки восстановления.
Для восстановления на момент времени может использоваться копия типа STREAM или ARCHIVE, но при этом обязательно наличие архива WAL с момента создания копии или более раннего.
Чтобы восстановить состояние кластера на определённый момент времени, укажите это время в параметре
--recovery-target-time
, в формате timestamp. Например:pg_probackup3 restore -B
каталог_копий
--instance=имя_экземпляра
--recovery-target-time="2024-04-10 18:18:26+03"Чтобы восстановить текущее или последнее возможное состояние кластера, передайте в параметре
--recovery-target-time
значениеcurrent
илиlatest
, соответственно:pg_probackup3 restore -B
каталог_копий
--instance=имя_экземпляра
--recovery-target-time="latest"Чтобы восстановить состояние кластера до определённой транзакции, воспользуйтесь ключом
--recovery-target-xid
:pg_probackup3 restore -B
каталог_копий
--instance=имя_экземпляра
--recovery-target-xid=687Чтобы восстановить состояние кластера до определённой позиции в журнале (LSN), воспользуйтесь ключом
--recovery-target-lsn
:pg_probackup3 restore -B
каталог_копий
--instance=имя_экземпляра
--recovery-target-lsn=16/B374D848Чтобы восстановить состояние кластера до заданной именованной точки восстановления, воспользуйтесь ключом
--recovery-target-name
:pg_probackup3 restore -B
каталог_копий
--instance=имя_экземпляра
--recovery-target-name="before_app_upgrade"Чтобы восстановить последнее возможное состояние, исходя из содержимого архива WAL, передайте в параметре
--recovery-target-stop
значениеlatest
:pg_probackup3 restore -B
каталог_копий
--instance=имя_экземпляра
--recovery-target-stop="latest"Чтобы восстановить самое раннее из возможных согласованное состояние кластера, передайте в параметре
--recovery-target-stop
значениеimmediate
:pg_probackup3 restore -B
каталог_копий
--instance=имя_экземпляра
--recovery-target-stop='immediate'