Переместить базу данных postgresql с одного сервера на другой

9

Я создал (пространственную) базу данных у себя дома, которая составляет несколько гигабайт, и я хочу переместить всю базу данных, как она есть, с одного компьютера на мой рабочий компьютер.

Ничего страшного, я создам новый экземпляр postgresql / postgis db на своем рабочем компьютере. Пользователи БД могут иметь или не иметь одинаковые имена на обоих компьютерах.

Является ли это возможным? Что я должен быть осторожным? Как я могу сделать это безболезненно?

Я использую postgresql v9.1.5 с расширением postgis. Ubuntu12.04 (ядро 3.2.0-31)

user528025
источник
Смотрите эту похожую тему в StackOverflow, Копирование базы данных PostgreSQL на другой сервер .
Василий Бурк

Ответы:

11

Вы можете запустить дамп базы данных:

pg_dump yourdatabase | gzip -9 > outfile.sql.gz

и затем импортируйте обратно в PostgreSQL на вашем рабочем компьютере. Это займет некоторое время, и результирующий файл, даже если он сжат, может находиться в диапазоне гигабайт, но должен быть достаточно маленьким, чтобы помещаться на USB-ключ.

На вашем рабочем компьютере создайте новую базу данных и загрузите дамп:

zcat outfile.sql.gz | psql yournewdatabase

Если у вас быстрое соединение (или вы можете потратить время), вы даже можете перенести базу данных через Интернет через зашифрованное соединение SSH или с помощью таких инструментов, как rsync.

LSerni
источник
1
А как насчет привилегий пользователя / группы? у меня дома, например, user1, но на работе его user2. Это имеет значение?
2
Это не должно Конечно, вы должны указать правильного пользователя в вашем приложении. Поскольку это ваш домашний ПК, попробуйте переименовать user1 в user2 и проверить, все ли работает, перед тем, как создавать дамп. Тогда передача должна быть безаварийной.
3
Используйте pg_dumpall для дампа ролей базы данных.
Фрэнк Хайкенс,
1
чтобы иметь возможность выгрузить базу данных, вам нужно установить ту же версию postgresql, что и на старом сервере, см. wiki.postgresql.org/wiki/Apt
rubo77
2

pg_dumpall - самый безопасный способ сделать это. В любом случае, я бы порекомендовал взять дампал до миграции. большая проблема в том, что восстановление может занять некоторое время, если оно большое.

Вы также можете скопировать каталог данных, предпочтительно после остановки вашего сервера (вы можете использовать pg_start_backup () вместо остановки, но просмотреть все документы на момент восстановления до того, как вы пойдете по этому маршруту. Этот маршрут допускает почти нулевое время простоя) Переместите однако. Также обратите внимание, что вы можете сделать это только в том случае, если архитектура ОС и ЦП одинакова в обеих системах. Таким образом, вы не можете перейти с Windows на Linux или с i686 на x86-64. Проверьте версии ядра ОС также по порядку. чтобы убедиться, что системы совместимы.

Крис Траверс
источник