Azure Cache for Redis への移行
この記事では、オンプレミスまたは別のクラウド サービスで実行されている既存の Redis キャッシュを Azure Cache for Redis に移行するためのさまざまな方法について説明します。
移行シナリオ
オープンソースの Redis は、多くのコンピューティング環境で実行できます。 一般的な例は、次のとおりです。
- オンプレミス - プライベート データ センターで実行されている Redis キャッシュです。
- クラウドベースの VM - Azure VM や AWS EC2 などで実行されている Redis キャッシュです。
- ホスティング サービス - AWS ElastiCache などの管理対象 Redis サービスです。
このようなキャッシュがあれば、中断やダウンタイムを最小限に抑えながら、Azure Cache for Redis に移行できます。
Azure リージョン間で移行する場合は、「Azure Cache for Redis インスタンスを別のリージョンに移動する」の記事を参照することをお勧めします。
移行オプション
別のキャッシュに切り替えるには、さまざまな方法があります。 キャッシュの場所やアプリケーションからの操作方法に応じて、ほかの方法よりも役立ちます。 頻繁に使用されるいくつかの移行戦略について、以下で詳しく説明します。
オプション | 長所 | 短所 |
---|---|---|
新しいキャッシュを作成する | 実装が非常に簡単です。 | 新しいキャッシュにデータを再入力する必要があります。多くのアプリケーションで動作しない可能性があります。 |
RDB ファイルを使用してデータをエクスポートおよびインポートする | 一般に、Redis キャッシュとの互換性があります。 | RDB ファイルの生成後に既存のキャッシュに書き込まれると、一部のデータが失われる可能性があります。 |
2 つのキャッシュにデータを二重に書き込む | データの損失やダウンタイムはありません 既存のキャッシュが中断されない操作です。 新しいキャッシュのテストが簡単になります。 | 長期間にわたって 2 つのキャッシュが必要です。 |
プログラムでデータを移行する | データの移動方法を完全に制御できます。 | カスタム コードが必要です。 |
新しい Azure Cache for Redis を作成する
このアプローチは、技術的には移行ではありません。 データが失われる心配がない場合、Azure Cache for Redis に移動する最も簡単な方法は、キャッシュ インスタンスを作成し、アプリケーションを接続することです。 たとえば、Redis をデータベース レコードのルックアサイド キャッシュとして使用すると、キャッシュをゼロから簡単に再構築できます。
このオプションを実装する一般的な手順は、次のとおりです。
新しい Azure Cache for Redis インスタンスを作成します。
新しいインスタンスが使用されるようにアプリケーションを更新します。
古い Redis インスタンスを削除します。
データを RDB ファイルにエクスポートし、Azure Cache for Redis にインポートする
オープンソースの Redis は、キャッシュのメモリ内データセットのスナップショットを取得してファイルに保存するための標準的なメカニズムが定義されます。 この (RDB と呼ばれる) ファイルは、別の Redis キャッシュで読み取ることもできます。 Azure Cache for Redis Premium レベルでは、RDB ファイルを使用したキャッシュ インスタンスへのデータのインポートがサポートされています。 RDB ファイルを使用すると、既存のキャッシュから Azure Cache for Redis にデータを転送できます。
重要
RDB ファイルの形式は、Redis のバージョン間で変更されることがあるため、下位互換性が確保されない場合があります。 エクスポート元のキャッシュの Redis バージョンは、Azure Cache for Redis で提供されるバージョン以下である必要があります。
このオプションを実装する一般的な手順は、次のとおりです。
既存のキャッシュと同じ (または大きい) サイズの新しい Azure Cache for Redis インスタンスを Premium レベルで作成します。
既存の Redis キャッシュのスナップショットを保存します。 スナップショットが定期的に保存されるように Redis を構成することも、SAVE または BGSAVE コマンドを使用して手動でプロセスを実行することもできます。 既定の RDB ファイル名は "dump.rdb" であり、このファイルは redis.conf 構成ファイルで指定されたパスに配置されています。
Note
Azure Cache for Redis 内でデータを移行する場合は、RDB ファイルをエクスポートするための手順を参照するか、代わりに PowerShell エクスポート コマンドレットを使用してください。
RDB ファイルを新しいキャッシュが配置されているリージョンの Azure ストレージ アカウントにコピーします。 このタスクでは、AzCopy を使用できます。
これらのインポート手順または PowerShell インポート コマンドレットを使用して、RDB ファイルを新しいキャッシュにインポートします。
新しいキャッシュ インスタンスが使用されるようにアプリケーションを更新します。
移行期間内に 2 つの Redis キャッシュに同時に書き込む
キャッシュ間で直接データを移動するのではなく、アプリケーションを使用して、既存のキャッシュと設定中の新しいキャッシュの両方にデータを書き込むことができます。 最初に既存のキャッシュからデータが読み取られます。 新しいキャッシュに必要なデータがある場合は、そのキャッシュにアプリケーションを切り替え、古いキャッシュを削除します。 たとえば、Redis をセッション ストアとして使用し、アプリケーション セッションが 7 日間有効であるとします。 1 週間で 2 つのキャッシュに書き込むと、新しいキャッシュに期限切れではないセッション情報がすべて含まれていることがわかります。 その時点以降は、データが失われることを心配せずに安全に利用できます。
このオプションを実装する一般的な手順は、次のとおりです。
既存のキャッシュと同じ (または大きい) サイズの新しい Azure Cache for Redis インスタンスを Premium レベルで作成します。
新しいインスタンスと元のインスタンスの両方に書き込まれるようにアプリケーション コードを変更します。
新しいインスタンスに十分なデータが入力されるまで、元のインスタンスからのデータの読み取りを続行します。
新しいインスタンスからの読み取りと書き込みのみが行われるようにアプリケーション コードを更新します。
元のインスタンスを削除します。
プログラムで移行する
プログラムで既存のキャッシュからデータを読み込み、Azure Cache for Redis に書き込むことで、カスタム移行プロセスを作成できます。 このオープンソース ツールを使用すると、別の Azure Cache for Redis インスタンスにデータをコピーできます。 コンパイル済みのバージョンも入手できます。 また、独自の移行ツールを作成する際に役立つガイドとなるソース コードが見つかることもあります。
Note
このツールは、正式には Microsoft でサポートされていません。
このオプションを実装する一般的な手順は、次のとおりです。
既存のキャッシュが配置されているリージョンで VM を作成します。 データセットが大きい場合は、コピー時間が削減されるように、比較的強力な VM を選択してください。
新しい Azure Cache for Redis インスタンスを作成します。
新しいキャッシュからデータをフラッシュして、空になったことを確認します。 このステップは、コピー ツール自体ではターゲット キャッシュの既存のキーが上書きされないため必須です。
重要
絶対にソース キャッシュからフラッシュしないでください。
上記のオープンソース ツールなどのアプリケーションを使用して、ソース キャッシュからターゲットへのデータのコピーを自動化します。 データセットのサイズによっては、コピー処理が完了するまでに時間がかかる場合があることに注意してください。
次の手順
Azure Cache for Redis の機能について