Резервное копирование БД 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
Удалить (если была) и создать БД rdb2:
dropdb -U user rdb2
createdb rdb2 -E UTF8 -l ru_RU.UTF-8 -T template0 -U user
Восстановить бэкап БД rdb на rdb2:
pg_restore -i -h localhost -p 5432 -U sysdba -d rdb2 -F t -c rdb-dump.tar
Переназначить владельца БД:
postgres=# alter database rdb2 owner to sysdba;
Восстановить из файла в другую базу.
Сначала надо удалить базу-получателя, если она была:
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