メニュー
Amazon ElastiCache
ユーザーガイド (API Version 2015-02-02)

ElastiCache バックアップと復元の管理 (Redis)

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 を消費して、バックアップを失敗させる場合があります。

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

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

このセクションでは、バックアップとリストアシナリオを使用する場合の概要について説明します。

重要

非常にまれですが、バックアップ処理で、最終的なバックアップを含め、バックアップが作成されないことがあります。バックアップエラーの原因は、たいてい利用可能なメモリの不足です。そのため、バックアップを実行する前に、利用可能なメモリが十分にあることを確認する必要があります。メモリが不足している場合、いくつかのキーを排除するか、reserved-memory-percent の値を増やします。

詳細については、以下のトピックを参照してください。

クラスターを削除しようとする場合、データを保持することが重要なら、念のため、最初に手動バックアップを作成し、ステータスが available であることを確認した後で、クラスターの削除に進みます。これにより、仮にバックアップが失敗しても、使用できるクラスターデータを持っていることになり、上で概要が説明されているベストプラクティスに従って再度バックアップを作成できます。

バックアップの制約

バックアップを計画または作成するときは、以下の制約事項を考慮する必要があります。

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

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

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

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

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

  • バックアップ処理中は、クラスターの API や CLI のオペレーションを追加実行することはできません。

バックアップのコスト

ElastiCache では、アクティブなそれぞれの Redis クラスターについて、1 つのバックアップを無料で保存することができます。追加バックアップのストレージ領域については、すべてのリージョンで 1 か月あたり $0.085/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 パラメータを設定する - 過剰なページングを軽減するために、reserved-memory パラメータを設定することをお勧めします。このパラメータは、Redis がノードの使用可能なメモリをすべて消費することを防止し、ページング容量を削減するのに役立ちます。また、大容量のノードを使用するだけでパフォーマンスが向上する場合があります。reserved-memory パラメータとノードのメモリサイズの詳細については、「Redis 固有のパラメータ」を参照してください。

     

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

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