RDB の永続性について

このページでは、Memorystore for Redis Cluster の Redis データベース(RDB)の永続性の概要について説明します。

RDB 永続性は、スナップショットを耐久性の高いストレージに保存することでデータを保護します。これらのスナップショットの頻度は、1 時間から 24 時間のスナップショット間隔を選択することで選択できます。

レプリカを持つノードは、レプリカからのデータ復元を優先します。ただし、プライマリとレプリカの両方が同時に失敗した場合、ノードは最新のスナップショットから復元されます。

クラスタをスケールアップすると、次回のスナップショット時刻まで、スナップショットに新しいシャードは含まれません。クラスタの永続性を有効または無効にすると、クラスタでメンテナンスが必要になることがあります。RDB 永続性の有効化と無効化の詳細については、永続性の管理をご覧ください。

RDB 永続性により、料金に追加料金は発生しません。この機能は、復旧後にある程度データのステイルネスが問題にならないユースケースに最適です。Memorystore for Redis Cluster は自動復元にスナップショットを使用するため、スナップショットを手動復元に使用することはできません。また、Memorystore for Redis Cluster は最新のスナップショットのみを保持します。

Memorystore for Redis Cluster は AOF 永続性もサポートしていますが、AOF 永続性と RDB 永続性のいずれかを選択する必要があります。両方の永続モードを同時に有効にすることはできません。永続性モードの選択について詳しくは、永続性の概要をご覧ください。

最適な可用性を実現するには、永続性を有効にするだけでなく、高可用性クラスタを使用することをおすすめします。詳細については、高可用性とレプリカをご覧ください。

スナップショットのスケジューリング

スナップショットの開始時刻とスナップショット間隔によって、スナップショット スケジュールが決まります。設定可能なスナップショット間隔は 1h、6h、12h、24h です。たとえば、開始時刻を午前 4 時に設定し、間隔を 1 時間に設定すると、スナップショットは、RDB 永続性を有効にした日の午前 4 時 に開始し、それ以降は 1 時間ごとに繰り返し実行されます。

Memorystore for Redis Cluster は、UTC タイムゾーンでスナップショット スケジュールを評価します。したがって、タイムゾーンで夏時間(DST)の変更が適用される場合、スナップショット スケジュール ジョブのローカル開始時間は、DST の開始時と終了時に 1 時間前または後に移動します。

スナップショットを一時停止する

RDB スナップショットの取得を一時停止したい場合があります。たとえば、重大なイベント中にパフォーマンスに影響が及ばないようにする、またはパフォーマンスの問題をトラブルシューティングするために、スナップショットを一時停止できます。

開始時間を将来に設定してスナップショットを一時停止すると、Memorystore for Redis Cluster は最後のスナップショットを保持します。ノードに障害が発生し、レプリカからデータを復元できない場合、ノードはこのスナップショットを使用してデータを復元します。スナップショットを再開するには、次のスナップショットを作成するタイミングに合わせてスナップショット スケジュールを調整します。詳細については、RDB スナップショットの間隔を調整するをご覧ください。

復旧動作

Memorystore for Redis Cluster ノードは、スナップショットからデータを読み込むのではなく、プライマリ復旧メカニズムとしてレプリカにフェイルオーバーします。ただし、ノードに障害が発生し、レプリカからデータを復元できない場合、ノードはスナップショットからデータを復元します。

復元時のデータの整合性

RDB 永続性を有効にすると、クラスタはベスト エフォートで指定された間隔でスナップショットを作成します。RDB スナップショットはポイントインタイム バックアップであるため、Memorystore for Redis Cluster がデータを復元した後、アプリケーションは、ある程度のステイルネスを許容できる必要があります。

スナップショットはさまざまな理由で失敗する可能性があります。スナップショットが複数の間隔で連続して失敗すると、最後に使用可能だったスナップショットが古くなっている可能性があります。

スナップショットからデータを復元する場合、最悪のデータ ステイルネスのケースは、最後の良好なスナップショットが開始されてからの指定した間隔と、次のスナップショットをストレージに保存する時間の合計です。復旧インシデントが発生した場合は、rdb_save_ages 指標を使用してデータ ステイルネスの時間枠を表示します。この指標の詳細については、永続性指標をご覧ください。

復旧までの時間

ノードに障害が発生し、スナップショットからデータを復元する必要がある場合、復元中はノードを使用できません。復元時間はスナップショットのサイズによって異なります。

スナップショット エラー

Memorystore for Redis Cluster は、5 ~ 300 秒の指数バックオフを使用して、失敗したスナップショットをすぐに再試行します。復元が発生すると、スナップショットが連続して失敗し、データのステイルネスが増加します。

復元の失敗

復旧に失敗することはまれですが、起きることがあります。復元に失敗すると、ノードは復元が成功するまでスナップショットからのデータの復元を繰り返し試みます。

スナップショットのモニタリング

スナップショットをモニタリングし、失敗したスナップショットのアラートを設定することをおすすめします。スナップショットの失敗は、ノードの負荷が大きすぎて、データの復元が不可能な状態が継続していることを表している可能性があります。

RDB 永続性に関するベスト プラクティスについては、永続性のベスト プラクティスをご覧ください。スナップショットのモニタリングに使用できる指標のリストについては、永続性指標をご覧ください。

パフォーマンスへの影響

Cloud Monitoring を使用して CPU 使用率やメモリ使用量などの指標を表示することで、スナップショットがクラスタのパフォーマンスに与える影響をモニタリングできます。