web-dev-qa-db-ja.com

RDSスナップショット:I / O中断はどのくらいの期間発生しますか?

バックアップ戦略はRDS Postgresqlの手動バックアップに依存しているため、スナップショットの作成中にRDSインスタンス(単一のAZ)がダウンする可能性があるという問題が発生しました。 AWSによると:

シングルAZ DBインスタンスでこのDBスナップショットを作成すると、DBインスタンスのサイズとクラスに応じて、数秒から数分続く短時間のI/O一時停止が発生します。

これは、スナップショットの期間中にDBインスタンスI/Oが正常に機能しているかどうかを確認する方法が明確ではありません。たとえば、DBが短期間ダウンしているかのように、対応するWebサーバーを停止するか、ロードバランサーを使用して、顧客側から接続の中断が発生しないようにします。

私たちがかなり不思議に思ったのは:

  • スナップショット作成中にDBに本当にダウンタイムがありますか?AWSは「I/O一時停止」と「レイテンシ」についてだけ言っていますか?スナップショットの初期化中にダウンタイムが短期間(数秒から数分)続くとある箇所を読んだところ、そのダウンタイムが過ぎてDBインスタンスが提供できる状態にあるかどうか(スナップショットがまだ作成されている間)がわかりますか?

  • これらのIOの一時停止に対処するための一般的なベストプラクティスは何ですか?自動バックアップでも発生するようですが、DBスナップショットの作成中に毎日サイトにダウンタイムが発生する可能性がありますか?

2
Arcobaleno

答えは、スナップショットのしくみを理解することです。

スナップショットの開始時に、メッセージ(コマンド)がすべてのアプリケーションに送信され、一貫した状態になり、必要なデータがディスクにフラッシュされます。

このフラッシュにかかる時間は、メモリにあるデータの量、データの状態、およびデータをディスクに書き込むのにかかる時間によって異なります。

スナップショットをサポートする各アプリケーションがフリーズの準備を完了すると、snaphotプロセスがファイルシステムをスナップします。つまり、さらにデータブロックが書き込まれると、バックアッププロセスのコピーが最初に作成されます(COW-コピーオンライト)。次に、解凍​​(再開)メッセージ/コマンドが各アプリケーションに送信されます。

使用頻度の低いデータベースの場合、この凍結/解凍プロセスは数百ミリ秒しかかかりません。 GBのメモリを備えた大規模なデータベースで、ディスクにフラッシュする必要がある場合は、数秒かかります。

凍結/解凍サイクルが発生している間、新しいユーザー要求に対するディスクI/Oは一時停止されます。データベースはまだ実行中ですが、ディスク/ファイルシステムが同期されている間、すべてのリクエストは一時停止します。解凍メッセージを受信すると、すべてが再開されます。

マスター/スレーブデータベースの場合、マスターは影響を受けません。スナップショットはスレーブで取得されます。これは、素晴らしいAWS RDS機能の1つです。

3
John Hanley