AWS RDS PostgreSQLインスタンスからWALファイルを取得する


18

Amazon Web ServicesにPostgres RDSインスタンスがあります。自動バックアップが有効になっており、スナップショットを毎日取得しています。自分で管理できるRDSインスタンスのローカル「最新」バックアップを生成したいと思います。インスタンスに対してpg_dumpを実行するだけでは十分ではありません。データベースを任意の時点に復元できるようにするためです。バックアップが取得されてから、RDSとすべてのWALファイルのローカルバックアップが必要です。質問:

  1. RDSがバックアップルーチンで自動的に生成しているWALファイルとバックアップにアクセスできますか?これは理想的です。それらのローカルコピーをダウンロードしたいと思います。最初の調査の後、この質問に対する答えは「いいえ」だと感じています。RDSがWALファイルとバックアップをS3に保存しているように聞こえますが、アクセスできなくなります。確認をお願いします。

  2. RDSインスタンスで発生したトランザクション(WALファイル)にアクセスする他の方法はありますか?EC2でPostgresデータベースを作成し、プライマリ「ライブ」RDSインスタンスからこのEC2インスタンスにトランザクションを「フィード」できるはずだと思います。EC2インスタンスが更新されると、そこからWALファイルを取得できます。なんて頭痛ですか?:/このセットアップは可能ですか?RDSインスタンスからEC2インスタンスに「フィード」して、常に最新の状態にする魔法とは何ですか?

ありがとう!

回答:


17

更新:これについてAWSフォーラムに投稿しましたチャイムに行って、そこに尋ねてください


執筆時点では、Amazon RDSはRDS外部の物理レプリケーションをサポートしていません。あなたのことができGRANT、ユーザーREPLICATION使用権rds_superuserログインをしていますが、設定することができないreplicationで外のIPアドレスのエントリpg_hba.conf

さらに、RDSでDBパラメーターグループを作成すると、いくつかのキーパラメーターが表示されますが、ロックされます(例:archive_commandにロックされ/etc/rds/dbbin/pgscripts/rds_wal_archive %pます)。AWS RDS for PostgreSQLは、外部PITRにWAL-shippingレプリケーションを使用する場合に必要となるため、これらのWALを外部アクセス(たとえばS3経由)に公開するようには見えません。

したがって、この時点で、wal-shippingが必要な場合は、RDSを使用しないでください。それは缶詰の使いやすいデータベースですが、使いやすいということは、多くの場合、それも制限されていることを意味し、それは確かにここに当てはまります。Joe Loveがコメントで指摘しているように、RDS内で WAL配送とPITRを提供しますが、RDSの外部からWALにアクセスすることはできません。

そのため、RDSの独自のバックアップ機能(ダンプ、スナップショット、独自のWALベースのPITR)を使用する必要があります。


RDSによってレプリケーション接続(pg_basebackupまたはレプリケーションのストリーミング)が可能になり、アーカイブされたWALにアクセスできるようになったとしても、そのWALを実際に消費できない場合があります。RDSはパッチが適用されたPostgreSQLを実行しますが、パッチがどれほど大きく適用されているか、またはディスク上の形式が大幅に変更されているかどうかは誰にもわかりません。また、Amazonが選択したアーキテクチャ(おそらくx64 Linux)で実行されますが、簡単には判別できません。PostgreSQLのディスク形式とレプリケーションはアーキテクチャに依存するため、PostgreSQLビルドがそれらと互換性がある場合にのみ、Amazon RDSで使用されるものと同じアーキテクチャのホストにのみレプリケートできます。

これは、RDSから移行する簡単な方法がないことを意味します。データベースへのすべての書き込みを停止してから、データベースをpg_dump復元し、新しいDBを実行する必要があります。DBホストに直接アクセスできないため、レプリケーションとフェールオーバー、rsyncなどを使用した通常のトリックは機能しません。

RDSがパッチ未適用のPostgreSQLを実行したとしても、Amazonはおそらくpg_basebackupセキュリティ上の理由でRDSへのWALストリーミングまたはRDSへのインポートを許可したくないでしょう。PostgreSQLは、データディレクトリを信頼できるコンテンツとして扱います。内部機能をフックする巧妙な「LANGUAGE c」関数を作成した場合、または他のトリッキーな操作を行った場合は、サーバーを悪用して想定以上のアクセスを取得できる可能性があります。そのため、AmazonはすぐにインバウンドWALを許可しません。

アウトバウンドWAL送信をサポートできますが、フォーマットの互換性、変更の自由などに関する上記の問題は依然として当てはまります。


代わりに、LondisteやBucardoなどのツールを使用する必要があります。


RDSがPITRをサポートしていない場合、「特定の時点に復元する」というボタンは何に適していますか?
ジョー・ラブ

1
RDSはRDS 内で PITRをサポートします。WALをRDSの外部に出荷することはできません。RDSにはPITRがまったくサポートされていないと言っているので、それをどのように読むことができるかを見ることができるので、答えをより明確にするために編集します。
クレイグリンガー14


1

RondisteやBucardoなどのトリガーベースのシステムを使用したRDSへのレプリケーションとRDSからのレプリケーションは、2014年11月10日の時点で、そのフォーラムスレッドの回答によりサポートされています。

お知らせはこちら


1
これは便利ですが、ここで説明されているのと同じではありません。RDSを使用したBucardoやLondisteなど、トリガーベースの論理レプリケーションのサポートを追加しています。これにより、ホットスタンバイなどで使用される「物理的な」ログベースのストリーミングのサポートが追加されませpg_basebackup。セキュリティ上の懸念により物理レプリケーションを実際にサポートできないため、最善の選択をしました。
クレイグリンガー

ああ、はい。そして編集してくれてありがとう。より一般的に複製オプションを求めた別の人からこの質問に答えました-これがWALファイルについて具体的に尋ねていることに気づいたはずです。
michel-slm

その後、関連する質問へのリンクも追加してください。とにかく便利だろう。
クレイグリンガー

ここでは、ある-あまりにもそこに私の答えを投稿します。stackoverflow.com/questions/20468230/...
ミシェル-SLM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.