最小限のダウンタイムでherokuデータベースをAmazon RDSに移行する


15

heroku postgresデータベースがあり、それをAmazon RDSに移行してコストを節約したい。最小のダウンタイムでこれを行う方法は何ですか?通常、これには、データベースをリアルタイムで複製し、複製されたDBをメインDBとして昇格することが含まれます。

フォロワーデータベースを使用してheroku内のDBを移行でき、リードレプリカデータベースを使用してAmazon RDS内のDBを移行できることを知っています。自分のAmazon RDSにあるheroku DBのデータベースレプリケーションを作成する同様の方法はありますか?


2
すべてが複製されたらRDSでスレーブを作成し、herokuマスターを削除してRDSをマスターに昇格させることができます。
サム14年

2
@SamD Amazonが外部のデータベースから受信するPostgreSQLスレーブをまだサポートしているとは思いませんでした。彼らはそれを追加しましたか?docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…には表示されません。追加されている場合は、ドキュメントへのリンクをいただければ幸いです。そもそもどのようにフィードpg_basebackupしますか?そして、異なるメジャーバージョンに対処しますか?
クレイグリンガー14年

回答:


3

ここでは、古き良きダンプアンドリストアを実行する必要があることを確認してください。Amazonは、ダンプにロードする以外のインポートオプションを提供していないようです。

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html

そして、たとえそうであったとしても、Herokuが提供するエクスポートオプションはpg_dumpsのみです(つまり、basebackupsまたは外部ホットスタンバイノードをセットアップする機能ではありません)。

https://devcenter.heroku.com/articles/heroku-postgres-import-export

運が良ければ、並列化されたpg_dump(9.3+)と並列化されたpg_restore(8.4+)の両方をサポートするのに十分新しいPostgresバージョンを使用しているため、作業が少し速くなります。そして、うまくいけば、切り替えが進行している間、あなたはあなたのサイトへの書き込みをロックアウトするメンテナンスウィンドウを取る余裕があります...


1

あなたができるRDSデータベースにあなたの現在のアプリケーションを接続し、それがHerokuのとRDSの両方に挿入する必要があり、私は両方のサーバーに挿入するために、レプリケーションを設定するという意味ではありません。

これを設定すると、両方のデータベースに新しいレコードが保存されます。

RDSデータベースの最初の行を読み取ることにより、どのレコードが欠落しているかを簡単に確認できるはずです(たとえば、table1ではID 100以下のすべてのレコードが欠落しています)。その後、テーブルがたくさんない限り、簡単なエクスポートスクリプトを書くのはそれほど難しくないはずです。

それが役に立てば幸い


1

AWS DMS(データベース移行サービス)は外部SQLインスタンスからのデータの移行をサポートしているようです。データと変更をHerokuからRDSに複製する移行タスクを設定できました。それが実際に私のために働くかどうかはまだ見られていません;)

---編集---

DMSなどのサービスは、Herokuがデータベースで許可するよりも多くの特権ロールを必要とするため、Herokuでは機能しないようです。https//help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools -to-replicate-my-heroku-postgres-database-to-a-a-non-heroku-database

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.