PostgreSQL: импорт и экспорт резервных копий

Блог / Базы данных

Резервные копии базы данных - это то, что необходимо создавать как можно чаще, если администрируете сайт. Как бы провайдер не обещал вам бесперебойную работу вашего сервера, он просто физически не сможет застраховать вас от незапланированных поломок сервера, а последствия от этого могут быть весьма печальны.

При установке PostgreSQL по умолчанию вместе с ним ставятся две консольные утилиты: pg_dump (для экспорта резервных копий) и pg_restore (для импорта резервных копий).

1. Создание резервных копий

Для создания резервных копий, воспользуемся консольной утилитой pg_dump

pg_dump -h <хост> -U <имя пользователя> -F <формат> -f <путь сохранения> <имя БД>

, где:

  • <хост> - имя хоста, на котором располагается база данных. IP-адрес, доменное имя или localhost
  • <имя пользователя> - имя пользователя базы данных PostgreSQL, имеющего привилегии
  • <формат> - формат исходного файла. Может быть следующих видов: с (архив .tar.gz), t (.tar файл) или p (просто текстовый файл, как правило, помечается как .sql)
  • <путь сохранения> - путь, по которому сохранится исходный файл.
  • <имя БД> - имя базы данных, резервную копию которой необходимо создать.

Пример:

pg_dump -h localhost -U testuser -F c -f /var/dumps/testdb.tar.gz testdb

После выполнения команды, система спросит у вас пароль пользователя PostgreSQL, указанного в команде, от имени которого выполняется создание резервной копии.

2. Импорт резервных копий

Консольная утилита pg_restore умеет накатывать резервные копии только .tar файлов и архивов .tar.gz. Текстовые .sql файлы накатываются несколько иначе. рассмотрим оба способа.

2.1. Импорт .tar или .tar.gz

Для этих типов резервных копий воспользуемся консольной утилитой pg_restore:

pg_restore -h <имя хоста> -U <имя пользователя> -F <формат> -d <имя БД> <путь к дампу>

, где:

  • <имя хоста> - имя хоста, на котором располагается база данных. IP-адрес, доменное имя или localhost
  • <имя пользователя> - имя пользователя базы данных PostgreSQL, имеющего привилегии
  • <формат> - формат файла резервной копии. Если это .tar файл, то t, если .tar.gz архив, то c
  • <имя БД> - имя базы данных, на которую необходимо накатить резервную копию
  • <путь к дампу> - путь к файлу резервной копии

Пример:

pg_restore -h localhost -U testuser -F c -d testdb /var/dumps/testdb.tar.gz

2.2 Импорт текстового .sql файла

Текстовые .sql файлы резервной копии накатываются через cat:

cat <путь к дампу> | psql -h <имя хоста> -U <имя пользователя> <имя БД>

, где:

  • <путь к дампу> - путь к файлу резервной копии
  • <имя хоста> - имя хоста, на котором располагается база данных. IP-адрес, доменное имя или localhost
  • <имя пользователя> - имя пользователя базы данных PostgreSQL, имеющего привилегии
  • <имя БД> - имя базы данных, на которую необходимо накатить резервную копию

Пример:

cat /var/dumps/testdb.sql | psql -h localhost -U testuser testdb
Денис Каримов
Комментарии
Написать комментарий

Написать комментарий

2017г. Karimov.info