@vlarkanov

Как перенести БД postgres на другой сервер?

Собственно, сабж. Есть дамп, сделанный через pg_dump.
Есть два вопроса:
1) В офф доке написано:
psql dbname < infile... The database dbname will not be created by this command, so you must create it yourself from template0 before executing psql (e.g., with createdb -T template0 dbname).

Т.е. база должна быть создана. Можно ли посмотреть как была создана переносимая база данных (аналогично SHOW CREATE DATABASE db_name в MySQL) или во всех случаях можно смело создавать через createdb -T template0 dbname ?

2) Опять же в офф доке написано:
Before restoring an SQL dump, all the users who own objects or were granted permissions on objects in the dumped database must already exist. If they do not, the restore will fail to recreate the objects with the original ownership and/or permissions. (Sometimes this is what you want, but usually it is not.


Т.е. должны быть созданы такие же пользователи как на сервере с переносимой БД. Как принято переносить пользователей, можно ли автоматизировать процесс?
  • Вопрос задан
  • 3271 просмотр
Решения вопроса 1
@Swartalf
1. \d public.some_table вы сможете увидеть описание таблицы. Не совсем то что в MySQL.
Да через createdb -T template0 вы просто создадите пустую базу, для 95% случаев хватает с головой.
2. Да пользователи должны уже быть, так как в sql-дампе будут команды на раздачу прав. Посмотреть можно через \du или выбрать из вью pg_user, если хочете еще хадкорней, то смотрите как эта вью собирается и выбирайте из источника.
3. Если у вас версия посгреса и платформа не отличаются, то можно перенести через бинарный дамп - pg_basebackup
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@oller
Бекап делать pg-basebackup
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы