Redis 用 Amazon ElastiCache
Redis 用 ElastiCache ユーザーガイド (API バージョン 2015-02-02)

Redis 用 ElastiCache でのバックアップと復元

Redis を実行している Amazon ElastiCache クラスターでは、データをバックアップできます。バックアップを使用して、クラスターを復元したり、新しいクラスターをシードしたりできます。バックアップは、クラスター内の全データとクラスターのメタデータで構成されます。すべてのバックアップは、堅牢なストレージを提供する Amazon Simple Storage Service (Amazon S3) に書き込まれます。いつでも、新しい Redis クラスターを作成し、バックアップのデータを挿入することでデータを復元できます。ElastiCache では、AWS マネジメントコンソール、AWS Command Line Interface (AWS CLI)、ElastiCache API を使用してバックアップを管理できます。

Redis 2.8.22 バージョンからは、使用可能なメモリに基づいてバックアップ方法が選択されるようになりました。十分な利用可能なメモリがある場合は、キャッシュのバックアップ中にすべての変更をキャッシュの予約メモリに書き込む子プロセスが生成されます。バックアッププロセス中のキャッシュへの書き込み回数に応じて、この子プロセスはすべての予約メモリを消費し、バックアップが失敗することがあります。

使用可能なメモリが不足している場合は、分岐なしの協調的なバックグラウンドプロセスが使用されます。分岐なしの方法は、レイテンシーとスループットの両方に影響を与える場合があります。詳細については、「同期とバックアップの実装方法」を参照してください。

バックアッププロセスのパフォーマンスへの影響については、「パフォーマンスに対するバックアップの影響」を参照してください。

以下に、バックアップと復元シナリオを使用する場合の概要について説明します。

重要

まれですが、バックアッププロセスで、最終的なバックアップを含めバックアップの作成に失敗することがあります。バックアップエラーの原因は、たいてい利用可能なメモリの不足です。したがって、バックアップを試行する前に、十分な予約メモリがあることを確認してください。メモリが不足している場合は、一部のキーを削除するか、reserved-memory-percent の値を増やすことができます。

詳細については、以下を参照してください。

クラスターを削除する予定であり、データを保持することが重要な場合は、万一に備えることができます。そのためには、まず手動バックアップを作成し、そのステータスが [available (使用可能)] であることを確認してから、クラスターを削除します。これにより、バックアップが失敗した場合でも、クラスターデータは引き続き使用できます。前述のベストプラクティスに従って、バックアップの作成を再試行できます。

バックアップの制約

バックアップを計画または作成するときは、以下の制約事項を考慮してください。

  • 現時点では、バックアップと復元は Redis で実行されるクラスターでのみサポートされます。

  • Redis (クラスターモードが無効) クラスターの場合、バックアップと復元は cache.t1.micro ノードではサポートされません。他のキャッシュノードタイプはすべてサポートされます。

  • Redis (クラスターモードが有効) クラスター、バックアップ、および復元はすべてのノードタイプでサポートされます。

  • 連続する 24 時間で、クラスターのノードあたり 20 個までの手動バックアップを作成できます。

  • Redis (クラスターモードが有効) は、クラスターレベル (API または CLI ではレプリケーショングループレベル) でのバックアップの作成のみをサポートしています。Redis (クラスターモードが有効) は、シャードレベル (API または CLI ではノードグループレベル) でのバックアップの作成をサポートしていません。

  • バックアッププロセス中は、クラスターで他の API または CLI オペレーションを実行できません。

バックアップのコスト

ElastiCache を使用して、アクティブな Redis クラスターごとに 1 つのバックアップを無料で保存できます。追加のバックアップのストレージ領域に対して、すべての AWS リージョンで 1 か月あたり 0.085 USD/GB の料金が発生します。バックアップの作成や、バックアップから Redis クラスターへのデータの復元には、データ転送料金はかかりません。

パフォーマンスに対するバックアップの影響

バックアッププロセスは実行中の Redis バージョンによって異なります。Redis 2.8.22 からは、プロセスは分岐なしとなっています。

Redis 2.8.22 以降のバージョンを実行している場合のバックアップ

バージョン 2.8.22 以降の Redis バックアップでは、2 つの方法から選択します。分岐ありのバックアップをサポートするのに十分なメモリがない場合、ElastiCache は協調的なバックグラウンド処理を使用する分岐なしの方法を使用します。分岐ありの保存プロセスをサポートするのに十分なメモリがある場合、以前の Redis バージョンと同じプロセスが使用されます。

分岐なしのバックアップ中に書き込み負荷が高い場合、キャッシュへの書き込みが遅延します。この遅延により、ほとんどの変更が累積されないため、バックアップが正常に行われなくなります。

Redis 2.8.22 より前のバージョンを実行する場合のバックアップ

バックアップは Redis のネイティブの BGSAVE オペレーションを使用して作成されます。キャッシュノードの Redis プロセスは、子プロセスを生成して、キャッシュから Redis .rdb ファイルにすべてのデータを書き込みます。子プロセスの生成には最大 10 秒かかることがあります。この間、親プロセスは着信アプリケーションリクエストを受け入れることができません。子プロセスが個別に実行された後、親プロセスは通常のオペレーションを再開します。子プロセスはバックアップオペレーションが完了すると終了します。

バックアップが書き込まれるとき、新しい書き込みには、追加のキャッシュノードメモリが使用されます。この追加のメモリ使用量がノードの使用可能なメモリを超えた場合、過剰なページングよって処理が低速になるか失敗する可能性があります。

バックアップパフォーマンスの向上

以下に示しているのは、バックアップパフォーマンスを向上させるためのガイドラインです。

  • reserved-memory-percent パラメータを設定する – 過剰なページングを軽減するために、reserved-memory-percent パラメータを設定することをお勧めします。このパラメータは、Redis がノードの使用可能なメモリをすべて消費することを防止し、ページング容量を削減するのに役立ちます。また、大容量のノードを使用するだけでパフォーマンスが向上する場合があります。reserved-memoryreserved-memory-percent パラメーターの詳細については、「予約メモリの管理」を参照してください。

     

  • リードレプリカからバックアップを作成する – 複数のノードを含むノードグループで Redis を実行している場合、プライマリノードまたはいずれかのリードレプリカからバックアップを作成できます。BGSAVE の実行時に必要なシステムリソースのために、いずれかのリードレプリカからバックアップを作成することをお勧めします。レプリカからバックアップが作成されている間、プライマリノードは BGSAVE リソースの要件の影響を受けません。プライマリノードは、速度を落とすことなくリクエストを処理し続けることができます。

レプリケーショングループを削除し、最終バックアップをリクエストした場合、ElastiCache は常にプライマリノードからバックアップを作成します。これにより、レプリケーショングループが削除される前に、最新の Redis データがキャプチャされます。