最小限のダウンタイムでHerokuPostgres本番データベースを9.2にアップグレードするための推奨される方法は何ですか?フォロワーを使用することは可能ですか、それともpgbackups / snapshotsルートを使用する必要がありますか?
2 に答える
9.4の論理フォロワーまでは、ダンプして復元する必要があります(Craigが説明している理由により)。これは、pgbackups:transferを使用して簡略化できます。直接転送はダンプと復元よりも高速ですが、保持するスナップショットがないことを知っておいてください。
以下のスクリプトは、基本的に、HerokuがPGバックアップを使用してHeroku Postgresデータベースをアップグレード し、 pgbackups:transferを変更したものです。(ステージングサーバーなど、複数のインスタンスがある場合は、各Heroku行に「-a」または「--remote」を追加して、どのサーバーを指定します。)
# get the pgbackups plugin
heroku plugins:install git://github.com/heroku/heroku-pg-extras.git
# provision new db
heroku addons:add heroku-postgresql:crane --version=9.2
# wait for it to come online, make note of new color
heroku pg:wait
# prevent new data from arriving during dump
heroku ps:scale worker=0 web=0
heroku maintenance:on
# copy over the DB. could take a while.
heroku pgbackups:transfer OLDCOLOR NEWCOLOR
# promote new database as default for DATABASE_URL
heroku pg:promote NEWCOLOR
# start everything back up and test
heroku ps:scale worker=N web=N
heroku maintenance:off
heroku open
# remove old database
heroku addons:remove HEROKU_POSTGRESQL_OLDCOLOR
それらの間でデータサイズを比較すると、9.2の効率のために、新しいデータサイズがはるかに小さくなる可能性があることに注意してください。(私の9.2は9.1の約70%でした。)
Herokuのフォロワーは、AFAIKであり、PostgreSQLストリーミングレプリカサーバーです。これは、バージョン間でそれらを使用できないことを意味します。バイナリ互換のデータベースが必要です。
pg_upgrade
Herokuで使用できない場合があることを除いて、通常のPostgreSQLと同じ手法を適用する必要があります。これには、データベースをホストするシステムのユーザーとしてシェル(sshなど)アクセスが必要です。postgres
したがって、実行するツールが提供されていない限り、Herokuでそれが可能かどうかは疑問pg_upgrade
です。私はこれについて多くの情報を見つけることができません。
pg_upgrade
Herokuデータベースインスタンスで実行する方法が見つからない限り、アップグレードを実行するには、Slony-I、Bucardo、または別のトリガーベースのレプリケーションソリューションの使用を検討する必要があります。一般的な考え方は、新しい9.2インスタンスを設定し、Slonyを使用して9.1インスタンスからそのインスタンスにデータを複製し、完全に同期したら、9.1インスタンスを停止し、Slonyトリガーを削除して、クライアントをに切り替えることです。 9.2インスタンス。
「postgresql低ダウンタイムアップグレードslony」などの詳細を検索して、どのように進むかを確認してください。