Vasulio-crtVasulio-crt
FoxelyssFoxelyss
Время чтения: 2 min
Изменено:18.09.2026, 19:57:57

Резервное копирование и восстановление

Для чего нужно:

  1. Для сохранения данных и восстановления объектов и/или данных
  2. Для тестирования
  3. Миграция данных

Виды копирования и восстановления:

  1. Внешний (Терминал)

Типы бекапа:

1.1. Логический — используется для переноса данных. Подходит, когда объём меньше 100 ГБ. Позволяет восстанавливать данные в различных версиях Postgres.

pg_dump - создание бекапа

pg_restore - восстановление

Пример:

pg_dump -Fc название > название_файла.dump
pg_restore -d назв.базы назв_файла.dump
pg_dumpall > назв_файл.dump

1.2. Физический — быстрое восстановление, но только совместимой версией.

pg_basebackup -d путь -Fp -Xs -P -U Юзер

Ключи:

  • -D - объявление пути
  • -Fp - файловый формат
  • -Xs - включать журнал транзакции
  • -P - прогресс
  • -U - юзер

1.3. Потоково-консистентный — создаёт копию БД и журнала транзакции. Позволяет восстановить БД на любой момент времени.

Пример:

pg_basebackup -d путь -f tar -z -p -u Юзер

Восстановление происходит через интерфейс

  1. Внутренний, через SQL — copy

команды:

copy from — создание бекапа copy in — восстановление бекапа

Общий вид:

copy название to 'путь' оператор оператор

Пример:

copy gr632_smsmi to 'ДомашняяПапка' delimiter ',' csv header;

Операторы:

  • ИНДФ — название бекапирование объекта
  • to 'путь' — указание пути
  • delimiter ',' — указание разделительного символа
  • csv header — первая строка будет писаться название объекта

Можно делать бекап результирующих таблиц

Общий вид:

copy (select ...) to 'путь' оператор оператор

Пример:

copy (select * from stud) to 'test/' delimiter ',' csv header;

Восстановление данных:

Общий вид:

copy ИНДФ from 'путь' оператор оператор

Пример:

copy gr632_smsmi from 'ДомашняяПапка' delimiter ',' csv header;

Если восстанавливаете объект, то данный объект должен быть создан (то есть если восстанавливаете таблицу, то она должна быть создана заблаговременно).

Ограничение метода:

  1. Это не полный объект
  2. Вручную
  3. Неудобно для больших данных