60

Heroku で、pgbackups アドオンを使用して本番データベースをステージング アプリにコピーしようとしています。アドオン ページの指示に従いました: https://devcenter.heroku.com/articles/pgbackups

まず、DB をキャプチャしました。

heroku pgbackups:capture --app production-app 

それは働いた:

HEROKU_POSTGRESQL_PURPLE (DATABASE_URL)  ----backup--->  b238

Capturing... done
Storing... done

ただし、ステージングアプリで復元しようとすると:

heroku pgbackups:restore DATABASE `heroku pgbackups:url --app production-app` --remote staging

次のエラー メッセージが表示されます。

DATABASE_URL does not match any of your databases
 !    Could not resolve database DATABASE
 !    
 !    Available databases: 

また、完全な URL を入力してみました。

 heroku pgbackups:url b238 --app production-app
 heroku pgbackups:restore DATABASE "https://s3.amazonaws.com/..." --remote staging

また、アプリに名前を付けようとしました( --remote staging の代わりに):

heroku pgbackups:restore DATABASE `heroku pgbackups:url --app production-app` --app staging-app

これらのどれも機能しませんでした。エラー メッセージに「利用可能なデータベースがありません」と表示されるのは興味深いことです。実際に空のステージングアプリを参照していると思います。私が入力した場合:

heroku pgbackups

私は得る:

 !    No backups. Capture one with `heroku pgbackups:capture`.

利用可能なバックアップ (本番) を見つけるには、次のように入力する必要があります。

heroku pgbackups --app production-app

現在のバックアップのリストを取得します。これが正常なのか、問題に関連しているのかさえわかりませんが、言及する必要があると思いました.

ここでSOに関するすべての回答を読んで試しましたが、何も機能しませんでした。何か案は?

4

12 に答える 12

25

更新: 次のコマンドを実行して、データベースを本番環境からステージング環境に転送できます。 heroku pg:copy your-app::DATABASE_URL DATABASE_URL -a yourapp-staging

アクションを確認するように求められます。確認が完了すると、すべてのデータが移行されます。

于 2016-10-11T03:46:16.080 に答える
15

更新: これは機能しなくなりました。以下の@lucas-nelsonの回答を参照してください。

そのため、物事はさらに簡単になりました..転送コマンドをpgbackupsの一部としてチェックアウトしてください

heroku pgbackups:transfer HEROKU_POSTGRESQL_PINK sushi-staging::HEROKU_POSTGRESQL_OLIVE -a sushi

https://devcenter.heroku.com/articles/upgrade-heroku-postgres-with-pgbackups#transfering-databases-between-heroku-applications

これは、本番コードをステージング サイトに戻すのに非常に役立ちました。

于 2014-06-03T00:43:28.267 に答える
8

これは私のために働く: heroku pg:copy you-app-production::DATABASE DATABASE -a you-app-staging

于 2016-09-27T23:21:43.043 に答える
1

本番データベース (ソースデータベース) をステージングデータベース (ターゲットデータベース)に転送 (コピー) するには、ソースpg:copyデータベースを参照して、ターゲットアプリケーションから呼び出す必要があります。

heroku pg:copy source-application::OLIVE HEROKU_POSTGRESQL_PINK -a target-application

もう一つの例:

heroku pg:copy my-production-app::HEROKU_POSTGRESQL_OLIVE HEROKU_POSTGRESQL_PINK --app my-staging-app

データベースの色名を取得するには、次を使用します。

heroku pg --app my-production-app
heroku pg --app my-staging-app

pg:copyを参照してください

于 2015-06-02T22:49:58.133 に答える
1

私は同じ問題に苦しんでいました。この質問への回答によると、問題は heroku gem のバージョンにある可能性があります。バージョンを (2.26.2 から 2.26.6 に) アップグレードしたところ、動作するようになりました。

于 2012-06-06T13:40:16.813 に答える
1

最初に本番環境の最新のバックアップを作成します。

heroku pgbackups:capture -a productionappslug --expire

Heroku がデータベースに付けた名前を調べます。

https://postgres.heroku.com/databases または https://dashboard.heroku.com/apps/STAGINGAPPSLUG/resources

次に、実稼働データベースのバックアップをステージングにロードします (RED を自分の色に変更します)。

heroku pgbackups:restore HEROKU_POSTGRESQL_RED -a stagingappslug `heroku pgbackups:url -a productionappslug`

stagingappslugliveappslugは、heroku アプリの略称です。

于 2013-12-05T09:35:36.307 に答える
0

運がない後。(heroku gem 2.31.4を使用しています)次のことを行いました(疲れた人のために)

  1. Herokuデータベースコンソールにログインします

  2. ステージングにログイン>'設定'>PGRestore>'接続設定'をテキストファイルにコピーします。

  3. 本番環境>スナップショットにログインし、「+」を押して現在のところ新しいバックアップを作成します。次に、ダウンロードを押します。アプリの/tmpフォルダーまたは必要な場所にダウンロードします。

  4. ステージングをメンテナンスモードに設定します

    $ heroku Maintenance:on

  5. このようにコマンドを実行し、最後に接続設定のテキストとダンプファイルを追加します。PGPASSWORD={...ここにあるもののビット...}-p 5432'tmp / b048.dump.dump'

  6. 実行後:

    $ heroku Maintenance:off

  7. ステージングにログインして、物事が一致することを確認します。可能であれば、本番環境であることがわかっている最近のトランザクションを検索します。$ herokuは、両方のアプリのコンソールを実行し、IDが一致することを確認します。

于 2012-09-21T07:15:22.113 に答える
0

--remote その --app ではないと思います これを試してください:

heroku pgbackups:restore DATABASE `heroku pgbackups:url --app production-app` --app staging-app
于 2013-11-28T14:42:43.933 に答える