EC2でPostgreSQLを実行するための最高のパフォーマンスを提供するものは何ですか?RAIDのEBS?/ mntのPGData?
好みや経験はありますか?EBSでPostgreSQLを実行するための主な「プラス」は、あるインスタンスから別のインスタンスへの切り替えです。これが/mntパーティションを使用するよりも遅くなる理由でしょうか?
PS:PostgreSQL 8.4を実行しており、データ/サイズは約50G、Amazon EC2 xlarge(64)インスタンスです。
EC2でPostgreSQLを実行するための最高のパフォーマンスを提供するものは何ですか?RAIDのEBS?/ mntのPGData?
好みや経験はありますか?EBSでPostgreSQLを実行するための主な「プラス」は、あるインスタンスから別のインスタンスへの切り替えです。これが/mntパーティションを使用するよりも遅くなる理由でしょうか?
PS:PostgreSQL 8.4を実行しており、データ/サイズは約50G、Amazon EC2 xlarge(64)インスタンスです。
ここにいくつかのリンクされた情報があります。主なポイントは、ブライアンマーフィーからのこの投稿です。
非常に忙しい170GB以上のOLTPpostgresデータベースをAmazonで1。5年間実行しています。私は「幸せ」とは言えませんが、それを機能させて、何かがうまくいかない午前3時にコロにダウンタウンを走るよりもそれを好みます。
注意すべき主なことが2つあります。
1)物理I / Oはあまり良くないため、最初のシステムがRAID0をどのように使用したか。
ここで明確にしましょう。物理的なI/Oは時々ひどいものです。:)
大規模なデータベースを使用している場合、EBSボリュームが実際のボトルネックになります。プライマリデータベースにはRAIDドライブに8つのEBSボリュームが必要であり、slonyを使用して2台のスレーブマシンにリクエストをオフロードしますが、それでも実際に追いつくことはできません。
このデータベースを単一のEBSボリュームで実行する方法はありません。
また、RAID0ではなくRAID10を使用することをお勧めします。EBSボリュームは失敗します。多くの場合、単一のボリュームでは、パフォーマンスが非常に長期間低下します。RAIDに含まれるドライブが多いほど、スムーズに処理されます。ただし、パフォーマンスの低いボリュームを新しいボリュームに交換し、RAIDを再構築して、速度を回復する必要がある場合があります。RAID0アレイではそれを行うことはできません。
2)EBSの信頼性は、データベース標準ではひどいものです。これについてはhttp://archives.postgresql.org/pgsql-general/2009-06/msg00762.phpでもう少しコメントしました 。最終的には、継続的なストリーミングでデータをバックアップする方法に注意する必要があります。推奨されるアプローチは、WAL出荷によるバックアップです。EC2 / EBSに障害が発生した場合に1〜2分のトランザクションが失われることが許容できない状況では、この環境にデプロイしません。これは、ほとんどのデータベースハードウェアよりもここで発生する可能性が少し高いためです。
同意しました。WALで出荷されるスペアが3つあります。1つは、WALファイルを単一のEBSボリュームにストリーミングし、最悪のシナリオのスナップショットバックアップに使用します。他の2つは、フェイルオーバー用に持っているプライマリデータベース(1つは西海岸のデータセンターにあり、もう1つは東海岸のデータセンターにあります)の正確なレプリカです。
EBSスナップショットの1つから最悪のシナリオで復元する必要がある場合、EBSスナップショットからEBS RAIDアレイにデータをストリーミングする必要があるため、6時間ダウンします。20mb /秒で170GB(運が良ければ)には長い時間がかかります。ドライブを作成してからこれらのスナップショットの1つが「使用可能」になるまで、30〜60分かかります。それでも、データベースを起動し、ホットデータがメモリにストリーミングされるまで非常に長い時間を待つ必要があります。
過去1。5年間にスペアの1つに2回フェイルオーバーする必要がありました。楽しくない。どちらの場合も、インスタンスの障害が原因でした。
EC2でより大きなデータベースを実行することは可能ですが、多くの作業、慎重な計画、および厚いスキンが必要です。
ブライアン