Подтвердить что ты не робот

Postgres копирует базу данных Heroku Production DB в локальную БД разработки

У меня есть база данных heroku, d76mj7ltuqs.

Затем у меня есть локальная база данных, test_development.

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

Как я могу сделать это в Postgres?

4b9b3361

Ответ 1

Используйте герою "pg: pull":

Вам нужно очистить локальную БД:

rake db:drop

Соберите некоторую информацию от Heroku:

heroku pg:pull DATABASE_URL test_development

Это подключится к базе данных heroku и скопирует ее в локальную базу данных.

Подробнее см. документацию Heroku по pg: pull.

Ответ 2

вот как я это делаю, обязательно запустите gzip, поскольку ваша база данных растет. также не экспортируют ACL, поскольку у вас, вероятно, нет одного и того же пользователя postgres на heroku и локальных учетных записях. замените ваши конкретные данные.

 pg_dump -h ec2-##-##-##-##.compute-1.amazonaws.com -p <port> -Fc --no-acl --no-owner -o -U <username> <databasename> | gzip > dumpfile.gz
 #<Prompt for Password>
 gunzip -c dumpfile.gz | pg_restore --verbose --clean --no-acl --no-owner -d test_development -U <local_username>

Ответ 3

Используйте свой терминал, чтобы сделать локальный pg_dump, а затем либо psql или pg_restore в свою локальную базу данных.

Аналогичный метод можно найти здесь.

Ответ 4

очистите локальную базу данных:

rake db:schema:load

сбрасывать базу данных героя:

heroku pg:backups:capture -r <**your production git repo name**>
heroku pg:backups:download -r <**your production git repo name**>

загружать данные в локальную базу данных

pg_restore --verbose --clean --no-acl --no-owner -h localhost -d <**test database name**> latest.dump

Ответ 5

Если это приложение Rails, вы можете использовать следующий script, чтобы перезаписать локальную базу данных с последним дампом, который вы создали на Heroku. Если вы раскомментируете строку с помощью heroku pg:backups capture, script создаст новый снимок на Heroku, прежде чем загружать его на ваш компьютер.

Обратите внимание, что вам не нужно редактировать script, так как он считывает всю конфигурацию из вашего файла database.yml.

#!/usr/bin/env ruby

require_relative '../config/environment'

# Uncomment the line below if you want to generate a new snapshot of the
# Heroku production database before downloading it to the local machine
# `heroku pg:backups capture`

database_dump_file_pathname = Tempfile.new('latest.dump').path
`heroku pg:backups:download --output #{database_dump_file_pathname}`

# Get database config fom database.yml file
database_config = YAML::load_file(Rails.root.join('config', 'database.yml'))
database_name = database_config['development']['database']
database_username = database_config['development']['username']
database_password = database_config['development']['password']

# Overwrite local database with dump
cmd_line_arguments = [
  '--verbose',
  '--clean',
  '--no-acl',
  '--no-owner',
  '--host localhost',
  "-U #{database_username}",
  "-d #{database_name}",
  database_dump_file_pathname
].join(' ')
`PGPASSWORD=#{database_password} pg_restore #{cmd_line_arguments}`

Подробнее см. документы Heroku по загрузке резервных копий БД.