Я ищу копию базы данных PostgreSQL на сервере разработки. Какой самый быстрый и простой способ сделать это?
Копирование базы данных PostgreSQL на другой сервер
Ответ 1
Вам не нужно создавать промежуточный файл. Вы можете сделать
pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname
или
pg_dump -C -h remotehost -U remoteuser dbname | psql -h localhost -U localuser dbname
с помощью psql
или pg_dump
для подключения к удаленному хосту.
С большой базой данных или медленным подключением, сброс файла и перенос сжатого файла могут быть более быстрыми.
Как сказал Корнел, нет необходимости сбрасывать промежуточный файл, если вы хотите работать сжатым, вы можете использовать сжатый туннель
pg_dump -C dbname | bzip2 | ssh [email protected] "bunzip2 | psql dbname"
или
pg_dump -C dbname | ssh -C [email protected] "psql dbname"
но это решение также требует, чтобы сеанс был в обоих концах.
Ответ 2
pg_dump the_db_name > the_backup.sql
Затем скопируйте резервную копию на ваш сервер разработки, восстановите с помощью:
psql the_new_dev_db < the_backup.sql
Ответ 3
Используйте pg_dump, а затем psql или pg_restore - зависит от того, выбираете ли вы опции -Fp или -Fc для pg_dump.
Пример использования:
ssh production
pg_dump -C -Fp -f dump.sql -U postgres some_database_name
scp dump.sql development:
rm dump.sql
ssh development
psql -U postgres -f dump.sql
Ответ 4
Если вы хотите переместиться между версиями (например, вы обновили postgres и выполнили 9.1 на локальном хосте: 5432 и 9.3, запущенные на localhost: 5434), вы можете запустить:
pg_dumpall -p 5432 -U myuser91 | psql -U myuser94 -d postgres -p 5434
Ознакомьтесь с документами по миграции.
Ответ 5
pg_basebackup
кажется лучшим способом сделать это сейчас, особенно для больших баз данных.
Ответ 6
Запустите эту команду с именем базы данных, вы хотите сделать резервную копию, чтобы выполнить сброс базы данных.
pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
eg. pg_dump -U postgres mydbname -f mydbnamedump.sql
Теперь scp этот файл дампа на удаленную машину, где вы хотите скопировать DB.
eg. scp mydbnamedump.sql [email protected]:~/some/folder/
На удаленном компьютере выполните следующую команду в папке ~/some/, чтобы восстановить БД.
psql -U {user-name} -d {desintation_db}-f {dumpfilename.sql}
eg. psql -U postgres -d mynewdb -f mydbnamedump.sql
Ответ 7
Я много боролся, и в конечном итоге метод, позволявший мне работать с Rails 4, был следующим:
на вашем старом сервере
sudo su - postgres
pg_dump -c --inserts old_db_name > dump.sql
Мне пришлось использовать postgres linux для создания дампа. также мне пришлось использовать -c для создания базы данных на новом сервере. --inserts сообщает ему использовать синтаксис INSERT(), который в противном случае не работал бы для меня: (
то на новом сервере, simpy:
sudo su - postgres
psql new_database_name < dump.sql
чтобы передать файл dump.sql между сервером, я просто использовал "cat" для печати содержимого и "nano", чтобы воссоздать его, копируя содержимое.
Кроме того, ROLE i, использующий две базы данных, был другим, поэтому мне пришлось найти - заменить все имя владельца в дампе.
Ответ 8
Позвольте мне поделиться оболочкой Linux script, чтобы скопировать данные таблицы с одного сервера на другой сервер PostgreSQL.
Ссылка, взятая из этого блога:
Linux Bash Shell script для миграции данных между серверами PostgreSQL:
#!/bin/bash
psql \
-X \
-U user_name \
-h host_name1 \
-d database_name \
-c "\\copy tbl_Students to stdout" \
| \
psql \
-X \
-U user_name \
-h host_name2 \
-d database_name \
-c "\\copy tbl_Students from stdin"
Я просто переношу данные; создайте пустую таблицу на сервере назначения/второго сервера базы данных.
Это утилита script. Кроме того, вы можете изменить script для общего использования, например, путем добавления параметров для имени хоста, имени базы данных, имени_таблицы и других
Ответ 9
Дамп вашей базы данных: pg_dump database_name_name > backup.sql
Импортируйте свою базу данных назад: psql db_name < backup.sql
Ответ 10
Принятый ответ правильный, но если вы хотите избежать ввода пароля в интерактивном режиме, вы можете использовать это:
PGPASSWORD={{export_db_password}} pg_dump --create -h {{export_db_host}} -U {{export_db_user}} {{export_db_name}} | PGPASSWORD={{import_db_password}} psql -h {{import_db_host}} -U {{import_db_user}} {{import_db_name}}