web-dev-qa-db-ja.com

PostgresがHeroku Production DBをローカル開発DBにコピー

Herokuデータベースがあります。d76mj7ltuqs

次に、ローカルデータベースtest_development

スキーマはこれらのデータベースの両方で同じです。すべてのデータを運用データベースからプルし、ローカルデータベースを上書きして、ローカルがプル時の運用の正確なレプリカになるようにします。

Postgresでどうすればよいですか?

37
Luigi

Herokuの「pg:pull」を使用します。

ローカルDBをクリアする必要があります。

rake db:drop

Herokuからいくつかの情報を収集します。

heroku pg:pull DATABASE_URL test_development

これはheroku DBに接続し、ローカルデータベースにコピーします。

詳細は Herokuのpg:pullに関するドキュメント を参照してください。

71
JezC

ローカルデータベースをクリーンアップします。

rake db:schema:load

herokuデータベースをダンプします。

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
Montells

このコマンドで作業を行う必要があります。

heroku pg:pull DATABASE_URL database-name --app heroku-app-name
4
Ishan Patel

これは私がやる方法です、あなたのデータベースが成長するので、必ずそれをgzipしてください。また、herokuアカウントとローカルアカウントに同じpostgresユーザーがいない可能性があるため、ACLをエクスポートしないでください。特定の詳細に置き換えます。

 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
blotto

端末を使用してローカルpg_dumpを作成し、次にpsqlまたはpg_restoreをローカルデータベースに作成します。

同様の方法が見つかります here

1
Alex

これがRailsアプリの場合、次のスクリプトを使用して、Herokuで生成した最新のダンプでローカルデータベースを上書きできます。heroku pg:backups captureで行のコメントを外すと、スクリプトは、マシンにダウンロードする前にHerokuで新しいスナップショットを生成します。

スクリプトは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}`

詳細は DBバックアップのダウンロードに関するHerokuのドキュメント を参照してください。

0
rick