次の方法で共有


Azure Cache for Redis インスタンスへの移行またはインスタンス間の移行

この記事では、Azure Cache for Redis の移行シナリオについて説明します。 オンプレミスまたはクラウド仮想マシン (VM) で実行されているオープン ソースの Redis キャッシュ、またはホストされているキャッシュを他のクラウド プラットフォームから Azure Cache for Redis に移行できます。

1 つの Azure Cache for Redis インスタンスを別のインスタンスに移行することもできます。 Azure Redis Cache を 1 つの Azure リージョンから別のリージョンに移動するだけで済む場合は、「 Azure Cache for Redis インスタンスを別のリージョンに移動する」を参照してください。

オープン ソース Redis は、プライベートオンプレミスのデータ センターやクラウドでホストされる VM など、多くのコンピューティング環境で実行できます。 アマゾン ウェブ サービス (AWS) などの他のホスティング プラットフォームでは、AWS ElastiCache などの Redis Cache サービスがホストされます。 通常、これらの Redis Cache は、中断やダウンタイムを最小限に抑えて Azure Cache for Redis に移行できます。

移行オプション

キャッシュ間の移行方法は、キャッシュが存在する場所と、アプリケーションがキャッシュとやり取りする方法によって異なります。 次の表に、よく使用される移行戦略を示します。

オプション 長所 短所
新しいキャッシュを作成する 実装が非常に簡単です。 一部のアプリケーションでは機能しない可能性がある新しいキャッシュにデータを再入力する必要があります。
読み取り専用データベース (RDB) ファイルを使用してデータをエクスポートおよびインポートします。 任意の Redis キャッシュと互換性があります。 RDB ファイルの生成後に既存のキャッシュに書き込まれたデータが失われる可能性があります。
2 つのキャッシュへのデータのデュアル書き込み。 データの損失やダウンタイム、キャッシュ操作の中断、テストの容易さはありません。 長期間にわたって 2 つのキャッシュが必要です。
プログラムを使用してデータを移行する。 データの移動方法を完全に制御します。 カスタム コードが必要です。

新しいキャッシュを作成する

中断されない操作と潜在的なデータ損失に問題がない場合、Azure Cache for Redis にデータを移動する最も簡単な方法は、Azure Redis Cache インスタンスを作成してアプリケーションを接続することです。 たとえば、Redis をデータベース レコードのルックアサイド キャッシュとして使用すると、キャッシュをゼロから簡単に再構築できます。 このアプローチは、技術的には移行ではありません。

このオプションを実装する一般的な手順は、次のとおりです。

  1. 新しい Azure Cache for Redis インスタンスを作成します。 必要に応じて、 Azure Managed Redis を試してみてください。
  2. 新しい Azure Redis インスタンスを使用するようにアプリケーションを更新します。
  3. 古い Redis インスタンスを削除します。

データを RDB ファイルにエクスポートし、Azure Cache for Redis にインポートする

オープン ソース Redis は、キャッシュのメモリ内データセットのスナップショットを取得し、Redis キャッシュが読み取ることができる RDB ファイルに保存する標準的なメカニズムを定義します。 Azure Cache for Redis Premium レベル では、RDB ファイルを使用したキャッシュ インスタンスへのデータのインポートがサポートされています。 RDB ファイルを使用して、既存のキャッシュから Azure Cache for Redis にデータを転送できます。

重要

RDB ファイル形式は Redis のバージョン間で変更される可能性があり、下位互換性が維持されない可能性があります。 エクスポートするキャッシュの Redis バージョンは、Azure Cache for Redis が提供するバージョン以下である必要があります。

このオプションを実装する一般的な手順は、次のとおりです。

  1. 既存の Redis キャッシュのスナップショットを保存します。 スナップショットを定期的に保存するように Redis を構成することも、SAVE または BGSAVE コマンドを使用して手動で保存することもできます。 RDB ファイルは既定で dump.rdb という名前で、 redis.conf 構成ファイルで指定されたパスにあります。
  2. 少なくとも既存のキャッシュと同じ大きさの新しい Premium レベルの Azure Cache for Redis インスタンスを作成します。
  3. RDB ファイルを新しいキャッシュが配置されているリージョンの Azure ストレージ アカウントにコピーします。 このタスクには AzCopy を使用できます。
  4. 新しいキャッシュに RDB ファイルをインポートします。 PowerShell Import-AzRedisCache コマンドレットを使用することもできます。
  5. 新しいキャッシュ インスタンスが使用されるようにアプリケーションを更新します。

別の Azure Redis インスタンスからデータを移行するには、まず、そのインスタンスから RDB ファイルを エクスポート するか、PowerShell Export-AzRedisCache コマンドレットを使用します。

移行中に 2 つの Redis キャッシュに書き込む

キャッシュ間でデータを移動するのではなく、既存のキャッシュと新しいキャッシュの両方にデータを書き込むようアプリケーションを一時的に設定できます。 アプリケーションは、最初に既存のキャッシュからデータを読み取ります。 新しいキャッシュに十分なデータがある場合は、アプリケーションをそのキャッシュに切り替えて、古いキャッシュを廃止できます。

たとえば、Redis をセッション ストアとして使用し、アプリケーション セッションは 7 日後に期限切れになるとします。 両方のキャッシュに 7 日間書き込んだ後、新しいキャッシュに期限切れでないセッション情報がすべて含まれていることがわかっており、その時点から安全に利用できます。 その後、古いキャッシュを廃止できます。

このオプションを実装する一般的な手順は、次のとおりです。

  1. 少なくとも既存のキャッシュと同じ大きさの新しい Premium レベルの Azure Cache for Redis インスタンスを作成します。
  2. 新しいインスタンスと元のインスタンスの両方に書き込むようアプリケーション コードを変更します。
  3. 新しいインスタンスに十分なデータが設定されるまで、元のインスタンスのデータを引き続き使用します。
  4. 新しいインスタンスからの読み取りと書き込みのみが行われるようにアプリケーション コードを更新します。
  5. 元のインスタンスを削除します。

プログラムで移行する

既存のキャッシュからデータをプログラムで読み取り、Azure Cache for Redis に書き込むことで、カスタム移行を作成できます。 たとえば、オープンソースの redis-copy ツールを使用して、Azure Redis インスタンス間でデータをコピーできます。

ソース コードは、独自の移行ツールを記述するための便利なガイドです。 コンパイル済みバージョンも使用できます。

このツールは、正式には Microsoft でサポートされていません。

このオプションを実装する一般的な手順は、次のとおりです。

  1. 既存のキャッシュと同じリージョンに Azure 仮想マシン (VM) を作成します。 データセットが大きい場合は、コピー時間を短縮する強力な VM を選択します。
  2. 新しい Azure Cache for Redis インスタンスを作成し、空であることを確認します。 redis-copy ツールは、ターゲット キャッシュ内の既存のキーを上書きしません。
  3. redis-copyなどのアプリケーションを使用して、ソース キャッシュからターゲット キャッシュへのデータのコピーを自動化します。 データセットのサイズによっては、コピー プロセスに時間がかかる場合があります。