アマゾンウェブサービスにPostgres RDSインスタンスがあります。自動バックアップを有効にしており、スナップショットを毎日作成しています。自分で管理できるRDSインスタンスのローカルの「最新」のバックアップを生成したいと考えています。インスタンスに対してpg_dumpを実行するだけでは十分ではありません。データベースを任意の時点に復元できるようにしたいからです。バックアップが取られたので、RDSとすべてのWALファイルのローカルバックアップを作成することをお勧めします。質問:
RDSがバックアップルーチンで自動的に生成するWALファイルとバックアップにアクセスすることは可能ですか?これは理想的です。それらのローカルコピーをダウンロードしたいと思います。最初の調査の結果、この質問に対する答えは「ノー」だと思います。 RDSはWALファイルとバックアップをS3に格納しているようですが、アクセスできなくなります。確認をお願いします。
RDSインスタンスで発生したトランザクション(WALファイル)にアクセスする他の方法はありますか? EC2上にPostgresデータベースを作成し、プライマリの「ライブ」RDSインスタンスからこのEC2インスタンスにトランザクションを「フィード」できるはずです。 EC2インスタンスが更新されると、そこからWALファイルをプルできます。しかし、どのような頭痛の種です:/この設定は可能ですか?常に最新の状態になるように、RDSインスタンスからEC2インスタンスに「フィード」する魔法は何ですか?
ありがとう!
更新: これについて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などのツールを使用する必要があります。
LondisteやBucardoのようなトリガーベースのシステムを使用したRDSへの、およびRDSからのレプリケーションは、そのフォーラムスレッドへの返信ごとに 2014年11月10日現在サポートされています です。
お知らせ こちら