PostgreSQL
October 14, 2022

pg_dump/pg_restore

Эти утилиты помогают создать дамп с базой данных (БД). И восстановить БД из дампа. Отлично подходят для бекапа БД на какой-то момент времени и её последующего восстановления.

Создать дамп всей базы с удаленного кластера в формате dump.

pg_dump -h rc1b-d061mg640assuadq.mdb.yandexcloud.net -U cameda -p 6432 -d dvdrental -Fc -f dvdrental.dump

rc1b-d061mg640assuadq.mdb.yandexcloud.net - адрес сервера
cameda - имя владельца БД
6432 - порт, к которому происходит коннект
dvdrental - название базы

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

Восстановим БД из имеющегося дампа.

pg_restore -h rc1b-d061mg640assuadq.mdb.yandexcloud.net -U cameda -p 6432 -d dvdrental2 dvdrental.dump

Создать дамп всей базы с удаленного кластера в формате sql.

pg_dump -h rc1b-d061mg640assuadq.mdb.yandexcloud.net -U cameda -p 6432 -d dvdrental -t actor -t address -f dvdrental2.sql

И восстановить новую БД из дампа:

psql "host=rc1a-ovwwvk9ehxif2qpr.mdb.yandexcloud.net,rc1b-d061mg640assuadq.mdb.yandexcloud.net \
      port=6432 \
      sslmode=verify-full \
      dbname=dvdrental2 \
      user=cameda \
      target_session_attrs=read-write" < dvdrental2.sql

Ещё пример:

### dump all DBs
pg_dump -h c-c9q9axx05rxxxgq8mr70.rw.mdb.yandexcloud.net -p 6432 -U service-prodavay-market --format=c --encoding=UTF-8 --inserts --no-privileges --no-owner -d prodavay-market -f ./prodavay-market.dump
pg_dump -h c-c9q9axx05rxxxgq8mr70.rw.mdb.yandexcloud.net -p 6432 -U service-prodavay-notifications --format=c --encoding=UTF-8 --inserts --no-privileges --no-owner -d notifications -f ./notifications.dump

### restore DBs
pg_restore -h 10.161.21.16 -U service-prodavay-market --clean --no-owner --create -d prodavay-market -p 6432 -Fc -v ./prodavay-market.dump
pg_restore -h 10.161.21.16 -U service-prodavay-notifications --clean --no-owner --create -d notifications -p 6432 -Fc -v ./notifications.dump