Как создать postgres дамп


PostgreSQL — реляционная система управления базами данных, в основе SQL и набор команд при работе с Postgres практически идентичен тому, что используется с MySQL. Для перемещения БД на другой сервер и создания бэкапов используется Postgres дамп.



Все команды должны выполняться от имени пользователя, имеющего достаточные привилегии для работы с определенной базой.



В примерах ниже будет использоваться пользователь postgres

su - postgres

pg_dump DATABASE_NAME > dump.sql



Пример приведен на скриншоте:

postgres дамп


Здесь после авторизации как пользователь postgres выведен список баз (\l) с переходом в консоль сервера баз данных за счет psql. Потом создан дамп системной базы postgres с именем postgres.



Postgres дамп на выходе представляет собой .sql файл, который читабелен и может быть отредактирован после экспорта.



Флаги pg_dump, которые применяются чаще всего


-h — удаленный хост (ip адрес)

-p — пора на удаленном сервере, к которому нужно подключаться

-U — имя пользователя, имеющему достаточные права доступа для дампа базы данных



Команда с применением этих флагов будет выглядеть так:

pg_dump -h 123.123.123.123 -p 3434 -U dbadmin DATABASE_NAME > dump.sql



Восстановление из дампа можно выполнять за счет psql или pg_restore



В обоих случаях предварительно нужно убедиться в том, что база существует, при необходимости она создается так:

createdb -T template0 DATABASE_NAME



Восстановление из дампа

pg_restore -d DATABASE_NAME dump.sql


Если pg_restore передать ключ -C будет автоматически создана БД с указанным именем.



Другая команда для восстановления — psql

psql dbname < dumpfile



Postgres дамп при создании бэкапов Postgres


Утилита pg_dumpall позволяет быстро сделать дамп всех баз на сервере и сохранить их в один файл

pg_dumpall > all.sql



Создание дампов таким образом можно использовать в скриптах для регулярного резервного копирования по планировщику CRON.



Разворачивается такой дамп затем командой psql с ключем -f

psql -f all.sql postgres



Можно использовать перенаправления вывода и экспортировав дамп Postgres на одном сервере, загрузить его в базу на другом

pg_dump -h 123.123.123.123 DATABASE_NAME | psql -h 123.123.124.124 DATABASE_NAME



Читайте про создание дампов и их импорт для MySQL

Сказать спасибо