Redis と Valkey のワークロードを Memorystore for Valkey に移行する

このドキュメントでは、セルフマネージド Redis ワークロードと Valkey ワークロードを Memorystore for Valkey に自動的に移行する方法について説明します。フルマネージド環境に移行すると、独自のインフラストラクチャを管理する運用上の負担が軽減されるため、手動での OS パッチ適用、レプリケーションの設定、カスタム バックアップ スクリプトの処理が不要になります。この機能を使用すると、組み込みの自動フェイルオーバー、安全な VPC 接続、ゼロダウンタイムのスケーリングを利用できます。

セルフマネージド ワークロードを Memorystore for Valkey に移行すると、運用上の手間を省き、データベース インフラストラクチャをモダナイズできるというメリットがあります。

  • 運用上のオーバーヘッドを排除する: OS のパッチ適用、インフラストラクチャのモニタリング、バックアップ スクリプト、レプリケーション管理など、手動で時間のかかるタスクを Google Cloudにオフロードします。その結果、データベースのメンテナンスではなく、アプリケーションの開発に集中できます。
  • エンタープライズ グレードの高可用性を実現: フルマネージドの 99.99% SLA のメリットを享受できます。Memorystore for Valkey は、自動フェイルオーバーと組み込みのバックアップ / 復元機能を備えています。これにより、予期しないノード障害からアプリケーションを保護し、迅速な障害復旧を実現できます。
  • ほぼゼロのダウンタイムでスケーリングする: 予測できないトラフィックの急増に合わせて、インスタンスを動的にスケールインまたはスケールアウトします。アプリケーションをオフラインにすることなく、数百のノード(最大 250 シャード)に拡張できます。
  • セキュリティを強化する: 複雑で手動で構成されたネットワーク ルールを、安全な組み込みの VPC 接続と、きめ細かい Identity and Access Management(IAM)ベースのアクセス制御に置き換えます。これにより、Google Cloudの厳格なセキュリティ境界によってデータが保護されます。
  • インスタンスを統合してアップグレードする: 分散したサイロ化されたセルフマネージド インスタンスを、Memorystore for Valkey の単一の高性能デプロイに統合します。この移行の一環として、古い Redis または Valkey バージョンを、サポートされている最新リリースに自動的にアップグレードすることもできます。
  • 高度なリアルタイム分析と生成 AI を活用する: キャッシュ保存とセッション管理でマイクロ秒単位のレイテンシを実現する最適化された環境に移行します。生成 AI(GenAI)アプリケーションを強化するために、ベクトル検索などの高度な機能にすぐにマネージド アクセスできます。

バージョン サポート

このセクションの表には、ソースの Redis インスタンスと Valkey セルフマネージド インスタンス、Memorystore for Valkey のターゲット インスタンスに関する次の情報が記載されています。

  • 移行でサポートされているソース インスタンスのタイプとバージョン
  • ワークロードを移行できるターゲット Memorystore for Valkey インスタンスのバージョン
ソース インスタンスのタイプ ソース インスタンスのバージョン ターゲット インスタンスのバージョン
Redis 3.2.x ~ 7.2.x Valkey 7.2、8.0、9.0、9.1
Valkey 7.x、8.x、9.x Valkey 7.2、8.0、9.0、9.1

始める前に

ワークロードの移行を開始する前に、このセクションの前提条件を完了してください。

Google Cloud コンソール、gcloud CLI、API を使用する

Google Cloud コンソール、Google Cloud CLI(gcloud CLI)、API を使用するには、次の操作を行います。

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Google Cloud CLI をインストールして初期化します。

    すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して、最新バージョンがインストールされていることを確認してください。Memorystore for Valkey の gcloud CLI コマンドを利用するには、少なくとも gcloud CLI バージョン 489.0.0 が必要です。

  4. Memorystore for Valkey API を有効にします。
    Memorystore for Valkey API
  5. Network Connectivity API を有効にします。
    Network Connectivity API
  6. Service Consumer Management API を有効にします。
    Service Consumer Management API
  7. Compute Engine API を有効にします。
    Compute Engine API

ロールと権限を割り当てる

セルフマネージド Redis と Valkey のワークロードを Memorystore for Valkey に移行するには、 Google Cloud プロジェクトに対する Memorystore 管理者(roles/memorystore.admin)IAM ロールを付与するよう管理者に依頼してください。このロールの詳細については、事前定義ロールをご覧ください。

ネットワーク アタッチメントを作成して表示するには、 Google Cloud プロジェクトに対する Compute ネットワーク管理者(roles/compute.networkAdmin)IAM ロールを付与するよう管理者に依頼してください。このロールの詳細については、Compute Engine のロールをご覧ください。

ワークロードを移行するワークフロー

セルフマネージドの Redis ワークロードと Valkey ワークロードを Memorystore for Valkey に移行するには、次の操作を行います。

  1. ソース インスタンスを準備する: セルフマネージド Redis または Valkey インスタンスを構成して、Memorystore for Valkey への安全な接続とアウトバウンド レプリケーションを許可します。
  2. ターゲット インスタンスを準備する: シャード数やノードタイプなど、必要なインスタンス仕様を決定します。
  3. ターゲット インスタンスを作成する: 移行されたデータを受信する Memorystore for Valkey インスタンスをプロビジョニングします。
  4. ネットワーク アタッチメントを構成する: ネットワーク アタッチメントを設定します。このアタッチメントにより、ターゲット インスタンス(Google マネージド VPC ネットワークに存在)は、ソース インスタンス(VPC ネットワークに存在)への接続を開始できます。その結果、レプリケーションが確立されます。
  5. 移行を開始する: 同期プロセスを開始します。ターゲット インスタンスはソース インスタンスに自動的に接続し、リードレプリカとしてデータを継続的に複製します。
  6. 移行をモニタリングする: 移行が問題なく進行し、移行のステータスが HEALTHY であることを確認します。
  7. 移行を完了する: アプリケーション トラフィックをターゲット インスタンスに切り替えます。

移行元インスタンスを準備する

ワークロードをターゲットの Memorystore for Valkey インスタンスに移行できるように、セルフマネージド Redis または Valkey インスタンスを準備する必要があります。

ターゲット インスタンスのノードからソース インスタンスのノードへの接続を許可するには、次の操作を行います。

  • ソースノードで protected-mode を有効にしている場合は、無効にします。
  • 明示的な bind ディレクティブを使用してソースノードを構成した場合は、ターゲット ノードからの受信接続を許可するようにノードを更新します。ターゲット ノードは、ネットワーク アタッチメントのサブネット内の IP アドレスから接続を開始します。
  • ターゲット ノードからの受信接続をブロックする可能性のあるファイアウォール ルールを更新します。
  • ソースノードで認証と Transport Layer Security(TLS)を有効にしている場合は、無効にします。

ターゲット ノードがソースノードとのレプリケーションを確立できるようにするには、次の操作を行います。

  • データ変更を実行する Valkey コマンドや Redis コマンド、またはレプリケーションに使用されるコマンド(PING、PSYNC、HSET など)の名前は変更しないでください。
  • インスタンスにアクセス制御リスト(ACL)を使用する場合は、ターゲット インスタンスがレプリケーションを確立できるように、default ユーザーに次のコマンドを許可します。
    • REPLCONF
    • SYNC
    • PSYNC
    • PING
    • INFO
    • CLUSTER | NODES
  • ソース インスタンスに、ターゲット ノードからの追加のレプリケーション負荷を管理するのに十分なメモリと CPU 容量があることを確認します。

ターゲット インスタンスを準備する

レプリケーション プロセスをスムーズに行うには、ソース インスタンスからの受信ワークロードを処理できるように、ターゲットの Memorystore for Valkey インスタンスのサイズを適切に設定する必要があります。これを行うには、ターゲット インスタンスの正確な仕様を決定します。これらの仕様には、ソース インスタンスとの互換性、クラスタモード、データベース数、シャード数、インスタンス バージョン、ノードタイプが含まれます。

ターゲット インスタンスを準備するには、次のガイドラインに従ってください。

  • ソース インスタンスとの互換性: ソース インスタンスとターゲット インスタンスは、同じ Google Cloud プロジェクトとリージョンに存在する必要があります。
  • クラスタモード: ターゲット インスタンスのクラスタモードは、ソース インスタンスのクラスタモードと一致する必要があります。ソース インスタンスでクラスタモードが無効になっている場合、ターゲット インスタンスでもクラスタモードを無効にする必要があります。それ以外の場合、ターゲット インスタンスはクラスタモードが有効になっている必要があります。
  • データベースの数: ターゲット インスタンスがクラスタモード無効の場合、インスタンス上の論理データベースの数は、ソース インスタンス上のデータベースの数以上である必要があります。
  • シャード数: ターゲット インスタンスでクラスタモードが有効になっている場合、インスタンスのシャード数はソース インスタンスのシャード数と一致する必要があります。ただし、ソース インスタンスとターゲット インスタンスのレプリカ数は異なる場合があります。
  • インスタンスのバージョン: ターゲット インスタンスのバージョンは、ソース インスタンスのバージョンと互換性がある必要があります。詳細については、バージョンのサポートをご覧ください。
  • メンテナンス バージョン: ターゲット インスタンスのメンテナンス バージョンは MEMORYSTORE_20260313_01_00 以降である必要があります。詳細については、メンテナンスについてをご覧ください。
  • ノードタイプ: ターゲット インスタンスのノードタイプは、ソースノードから受信するデータを処理できる十分な大きさである必要があります。ターゲット インスタンスに選択できるノードタイプと、各ノードタイプに対応するキースペース容量の詳細については、ノードタイプの仕様をご覧ください。

ターゲット インスタンスを作成する

Memorystore for Valkey が移行元インスタンスから移行するデータを受信するための要件を満たすターゲット インスタンスがない場合は、インスタンスを作成する必要があります。

このインスタンスを作成するには、 Google Cloud コンソール、gcloud CLI、または REST API を使用します。インスタンスの作成の詳細については、インスタンスを作成するをご覧ください。

ネットワーク アタッチメントを構成する

ソース インスタンスのワークロードをターゲット インスタンスに移行するには、ターゲット ノードをソースノードに接続する必要があります。この接続を有効にするには、ネットワーク アタッチメントを使用する必要があります。ターゲット ノードは、ネットワーク アタッチメントにリンクされているソース インスタンスの VPC ネットワーク内のサブネットから接続を開始します。

次の要件を満たすネットワーク アタッチメントを使用できます。

  • これは、ターゲット インスタンスと同じ Google Cloud プロジェクトとリージョンに存在する必要があります。
  • そのサブネットは、ソース インスタンスと同じ VPC ネットワーク内に配置する必要があります。
  • ソース インスタンスのサブネットには、少なくとも N+1 個の使用可能な IP アドレスをサポートする適切な IP CIDR の範囲が必要です(N はターゲット インスタンスのノード数)。たとえば、ターゲット インスタンスに 3 つのシャードと 1 つのレプリカがある場合、6 つのノード(プライマリ インスタンスに 3 つのノード、レプリカに 3 つのノード)があります。したがって、少なくとも 7 つの IP アドレスが必要です。
  • Memorystore for Valkey はこの範囲を予約するため、サブネット範囲を 10.0.0.0/23 と重複させることはできません。

ネットワーク アタッチメントがこれらの要件を満たしていない場合、またはネットワーク アタッチメントがない場合は、ネットワーク アタッチメントを作成する必要があります。詳しくは、ネットワーク アタッチメントを作成するをご覧ください。

移行を開始する

移行を開始すると、ターゲット インスタンスはソース インスタンスとのレプリケーションを確立します。ターゲット インスタンスは、アプリケーションがソース インスタンスに書き込むデータを自動的に複製します。ターゲット インスタンスは、ソース インスタンスのリードレプリカになります。

移行を開始するには、 Google Cloud コンソール、gcloud CLI、または REST API を使用します。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Valkey] ページに移動します。

    Memorystore for Valkey

  2. ターゲット インスタンスの ID をクリックします。

  3. [インスタンスの概要] ページで、[移行を開始] をクリックします。

  4. [セルフ マネージド Redis および Valkey インスタンスの移行] ウィンドウで、次の操作を行います。

  5. [準備] タブで、ソース インスタンスの前提条件とネットワーク アタッチメントのガイドラインに関する情報を確認します。[続行] をクリックします。

  6. [接続] タブで、次の操作を行います。

    1. ソース インスタンスの IP アドレスとポートを入力します。この情報は、移行元インスタンスを準備するでメモしたものです。
    2. データの移行に使用するネットワーク アタッチメントを選択します。
    3. [続行] をクリックします。
  7. [確認] タブで、移行プロセスに関連する情報を確認します。この情報には、ターゲット インスタンスの ID、ソース インスタンスの IP アドレスとポート、ネットワーク アタッチメントの名前が含まれます。この情報を確認したら、[移行を開始] をクリックします。

  8. [インスタンスの概要] ページで、[移行中] ステータスが表示されていることを確認します。

ターゲット ノードがソースノードに接続できない場合、またはソース インスタンスがターゲット インスタンスにデータを複製できない場合、移行は失敗します。

この場合、Memorystore for Valkey は、移行プロセスの開始前の状態にターゲット インスタンスをロールバックします。ターゲット インスタンスのステータスが [準備完了] に戻り、インスタンスに読み取りと書き込みの両方の機能が再び付与されます。

移行が失敗した原因を解決したら、移行を再度開始できます。

gcloud

次のように gcloud memorystore instances start-migration コマンドを使用します。

gcloud memorystore instances start-migration INSTANCE_ID \
--project=PROJECT_ID \
--location=REGION_ID \
--source-ip=SOURCE_IP_ADDRESS \
--source-port=SOURCE_PORT \
--network-attachment=projects/PROJECT_ID/locations/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID

次のように置き換えます。

  • INSTANCE_ID: ターゲット インスタンスの ID。
  • PROJECT_ID: このインスタンスが含まれているGoogle Cloud プロジェクトの ID またはプロジェクト番号。
  • REGION_ID: インスタンスが配置されているリージョンの ID。
  • SOURCE_IP_ADDRESS: 送信元インスタンスの IP アドレス。この IP アドレスは、ソース インスタンスを準備するでメモしました。
  • SOURCE_PORT: ソース インスタンスのポート番号。このポートは、移行元インスタンスを準備するでメモしたものです。
  • NETWORK_ATTACHMENT_ID: ネットワーク アタッチメントの ID。

移行が正常に開始されたことを確認するには、次のように gcloud memorystore instances describe コマンドを使用します。

gcloud memorystore instances describe INSTANCE_ID \
--project=PROJECT_ID \
--location=REGION_ID

state パラメータの横に MIGRATING ステータスが表示されていることを確認します。

ターゲット ノードがソースノードに接続できない場合、またはソース インスタンスがターゲット インスタンスにデータを複製できない場合、移行は失敗します。

この場合、Memorystore for Valkey は、移行プロセスの開始前の状態にターゲット インスタンスをロールバックします。ターゲット インスタンスのステータスが ACTIVE に戻り、インスタンスに読み取りと書き込みの両方の機能が再び付与されます。

移行が失敗した原因を解決したら、移行を再度開始できます。

REST

移行を開始するには、次の REST API コマンドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: ターゲット インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
  • REGION_ID: このインスタンスが配置されているリージョンの ID。
  • INSTANCE_ID: インスタンスの ID。
  • SOURCE_IP_ADDRESS: 送信元インスタンスの IP アドレス。この IP アドレスは、ソース インスタンスを準備するでメモしたものです。
  • SOURCE_PORT: ソース インスタンスのポート番号。このポートは、移行元インスタンスを準備するでメモしたものです。
  • NETWORK_ATTACHMENT_ID: ネットワーク アタッチメントの ID。

HTTP メソッドと URL:

POST https://memorystore.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/instances/INSTANCE_ID:startMigration

リクエストの本文(JSON):

{
  "selfManagedSource": {
    "ipAddress": "SOURCE_IP_ADDRESS",
    "port": SOURCE_PORT,
    "networkAttachment": "projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID"
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.memorystore.v1.OperationMetadata",
    "createTime": "2026-10-26T20:00:00.000000000Z",
    "target": "projects/PROJECT_ID/locations/REGION_ID/instances/INSTANCE_ID",
    "verb": "startMigration",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

移行をモニタリングする

移行が問題なく進行するように、移行元インスタンスとターゲット インスタンスの両方をモニタリングします。

移行元インスタンスをモニタリングする

移行元インスタンスで、移行元ノードのクライアント出力バッファの使用量が少ないことを確認します。バッファの使用状況を確認するには、次のいずれかを行います。

  • 既存のモニタリング ダッシュボードを使用する
  • Redis または Valkey クライアントを使用してソース インスタンスに接続し、INFO CLIENTS コマンドを実行して出力バッファの指標を確認します。

使用量が継続的に低い場合は、ラグが最小限に抑えられ、ソース インスタンスからターゲット インスタンスへのデータの同期が成功していることを示します。

ターゲット インスタンスをモニタリングする

ソース インスタンスから Memorystore for Valkey への移行の健全性をモニタリングできます。これを行うには、ターゲット インスタンスの移行ステータス(/instance/migration_status)指標を調べて、インスタンスの現在のステータスが HEALTHY であることを確認します。このステータスは、移行プロセス中にソース インスタンスとターゲット インスタンスのシャード間のレプリケーション リンクがアクティブで、正常に機能していることを示します。

Google Cloud コンソールを使用してインスタンスの移行ステータス指標を確認するには、次の操作を行います。

  1. Google Cloud コンソールで、Metrics Explorer のページに移動します。

    Metrics Explorer

  2. [指標] メニューから、[移行ステータス] 指標を選択します。これを行うには、[Memorystore インスタンス] > [インスタンス] > [移行ステータス] を選択し、[適用] をクリックします。

  3. [フィルタ] フィールドに、フィルタ instance_id = (equals) INSTANCE_ID を追加します。

    INSTANCE_ID は、ターゲット インスタンスの ID に置き換えます。

  4. [結果] セクションで、インスタンスの現在のステータスを確認します。HEALTHY ステータスが表示された場合、インスタンスは機能しており、移行を完了できます。

    HEALTHY ステータスが表示されない場合は、ターゲット インスタンスのプライマリ ノードの移行ステータス指標を使用できます。これらのノードをモニタリングすることで、特定のノードが正常でないかどうかを判断できます。

    インスタンス ノードに移行ステータス指標を使用する手順は次のとおりです。

    1. [指標] メニューから、[移行ステータス] 指標を選択します。これを行うには、[Memorystore インスタンス ノード] > [インスタンス] > [移行ステータス] を選択し、[適用] をクリックします。

    2. [フィルタ] フィールドに、フィルタ role = (equals) primary を追加します。

    3. [結果] セクションで、すべてのプライマリ ノードの現在のステータスが HEALTHY であることを確認します。ステータスが HEALTHY の場合、ノードは機能しており、移行を完了できます。

移行を完了する

移行を完了するには、 Google Cloud コンソール、gcloud CLI、または REST API を使用します。

コンソール

  1. Google Cloud コンソールで、[Memorystore for Valkey] ページに移動します。

    Memorystore for Valkey

  2. ターゲット インスタンスの ID をクリックします。

  3. [インスタンスの概要] ページで、[移行を完了] をクリックします。

  4. [移行を完了] ダイアログで、次の操作を行います。

    1. ターゲット インスタンスがソース インスタンスからすべてのデータを複製するようにするには、[標準] を選択します。

    2. [インスタンス ID] テキスト フィールドに、ターゲット インスタンスの ID を入力します。

    3. [移行を完了] をクリックします。

  5. [インスタンスの概要] ページで、[移行済み] ステータスが表示されていることを確認します。

gcloud

次のように gcloud memorystore instances finish-migration コマンドを使用します。

gcloud memorystore instances finish-migration INSTANCE_ID \
--project=PROJECT_ID \
--location=REGION_ID

次のように置き換えます。

  • INSTANCE_ID: ターゲット インスタンスの ID
  • PROJECT_ID: このインスタンスが含まれているGoogle Cloud プロジェクトの ID またはプロジェクト番号
  • REGION_ID: インスタンスが配置されているリージョンの ID

移行が正常に完了したことを確認するには、次のように gcloud memorystore instances describe コマンドを使用します。

gcloud memorystore instances describe INSTANCE_ID \
--project=PROJECT_ID \
--location=REGION_ID

state パラメータの横に MIGRATED ステータスが表示されていることを確認します。

REST

移行を完了するには、次の REST API コマンドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: ターゲット インスタンスが含まれている Google Cloud プロジェクトの ID。
  • REGION_ID: このインスタンスが配置されているリージョンの ID。
  • INSTANCE_ID: インスタンスの ID。
  • FORCE_BOOLEAN: 省略可。このパラメータは、Memorystore for Valkey が移行を直ちに完了するかどうかを決定します。

    • このパラメータを true に設定すると、Memorystore for Valkey は移行を直ちに完了し、アプリケーション トラフィックをターゲット インスタンスに切り替えることができます。ただし、Memorystore for Valkey では、ソース インスタンスからターゲット インスタンスにすべてのデータをレプリケートできない場合があります。
    • このパラメータを false に設定すると、Memorystore for Valkey は、移行が完了するまで、ソース インスタンスからターゲット インスタンスにすべてのデータを複製します。

HTTP メソッドと URL:

POST https://memorystore.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/instances/INSTANCE_ID:finishMigration

リクエストの本文(JSON):

{
  "force": FORCE_BOOLEAN
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.memorystore.v1.OperationMetadata",
    "createTime": "2026-10-26T20:00:00.000000000Z",
    "target": "projects/PROJECT_ID/locations/REGION_ID/instances/INSTANCE_ID",
    "verb": "finishMigration",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}