Как быстро и правильно сделать копию базы данных Postgresql

postgresql pg_dump copydb pg_restore

*Как быстро и правильно сделать копию базы данных Postgresql*

например: rdb скопировать в rdb2

  1. Сделать дамп БД rdb:
pg_dump -f rdb-dump.tar -F t -v -h localhost -p 5432 -U sysdba -W rdb

Если есть файл ~/.pgpass hostname:port:database:username:password с правами 600, то

pg_dump -f rdb-dump.tar -F t -v rdb
  1. Удалить если была и создать БД rdb2 
user@ext:~$ dropdb -U user rdb2
user@ext:~$ createdb rdb2 -E UTF8 -l ru_RU.UTF-8 -T template0 -U user
  1. Восстановить бэкап БД rdb на rdb2
pg_restore -i -h localhost -p 5432 -U sysdba -d rdb2 -F t -c rdb-dump.tar
  1. Переназначить владельца БД
postgres=# alter database rdb2 owner to sysdba;
  1. Восстановить из файла в другую базу

Сначала надо удалить базу-получателя, если она была:

postgres=# DROP DATABASE test_bgu;

Создать по-новой из template0

postgres=# create database test_bgu with template template0;

И, наконец, восстановить:

pg_restore -d test_bgu bgu_fresh-1710232146.backup

Способ 2.

pg_dump dbname > dbname.sql
psql <database_name> < file-with-sql-dump.sql