web-dev-qa-db-ja.com

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

アマゾンウェブサービスにPostgres RDSインスタンスがあります。自動バックアップを有効にしており、スナップショットを毎日作成しています。自分で管理できるRDSインスタンスのローカルの「最新」のバックアップを生成したいと考えています。インスタンスに対してpg_dumpを実行するだけでは十分ではありません。データベースを任意の時点に復元できるようにしたいからです。バックアップが取られたので、RDSとすべてのWALファイルのローカルバックアップを作成することをお勧めします。質問:

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

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

ありがとう!

18
jason.zissman

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


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

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

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

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


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

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

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

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


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

17
Craig Ringer
3
user318817

LondisteやBucardoのようなトリガーベースのシステムを使用したRDSへの、およびRDSからのレプリケーションは、そのフォーラムスレッドへの返信ごとに 2014年11月10日現在サポートされています です。

お知らせ こちら

1
michel-slm