マネージド移行を使用して、セルフマネージド MySQL メタストアを Dataproc Metastore に移行する

マネージド移行は、大幅なダウンタイムなしにセルフマネージド Hive Metastore から Dataproc Metastore サービスにデータを移行する際に役立つ自動化された機能です(別名でフラグデーとしても知られています)。

マネージド移行の仕組み

マネージド移行を完了するには、サービスで移行の開始と移行の完了の 2 つの移行プロセスを通しで実行する必要があります。移行は、移行キャンセル プロセスでいつでもキャンセルできます。移行を完了するために必要ではない、実行できる操作コマンドも多数あります。たとえば、移行の一覧表示や削除の移行です。

サービスがこのプロセスを通じて移動するにつれて、さまざまな移行状態と移行フェーズの間でも移動します。これらの状態とフェーズは、バックグラウンドで生起しているプロセスを表します。たとえば、MIGRATING 状態は、サービスが Cloud SQL データベースから Dataproc Metastore にデータをアクティブに転送していることを示します。

マネージド移行では、移行を行うために、proxy_subnetnat_subnetreverse_proxy_subnet の 3 つのサブネットが必要です。レイテンシの問題を回避するには、以下を構成します。

  • proxy_subnetnat_subnet は Cloud SQL と同じリージョンにあります。
  • reverse_proxy_subnet は、Dataproc Metastore サービスと同じリージョンにあります。

さまざまなタイプのサブネットの詳細については、サブネットの目的をご覧ください。

マネージド移行フロー

移行の開始

  1. Dataproc Metastore サービスで移行開始プロセスを実行します。
  2. Dataproc Metastore サービスは、Cloud SQL データベースに接続します。これは、セルフマネージド Hive メタストアのバックエンド データベースとして機能します。この手順では、まだ Cloud SQL データベースがデータの信頼できるソースです。

  3. Dataproc Metastore は、Cloud SQL データベースから Dataproc Metastore データベース(Cloud Spanner)にデータをコピーする変更データ キャプチャ(CDC)ストリームを実行します。

    移行の開始が成功すると、Dataproc Metastore へのワークロードのルーティングを開始できます。この時点では、まだ Cloud SQL がデータの信頼できるソースです。

移行を完了する

Dataproc Metastore へのワークロードの移行が完了したら、移行を完了できます。移行を完了プロセスが呼び出されると、次のようになります。

  • 移行を完了プロセスが完了するまで、Dataproc Metastore は読み取り専用モードに移行します。
  • CDC ストリームによって、処理中のすべてのデータが Dataproc Metastore に転送されます。
  • Dataproc Metastore は Spanner に接続し、Cloud SQL から切断されます。Dataproc Metastore が、データの信頼できる情報源として機能するようになりました。

始める前に

移行を開始するには、次のサービスを設定するか、それにアクセスできる必要があります。

  • Spanner データベース タイプで構成された Dataproc Metastore
  • プライベート IP で構成された Cloud SQL for MySQL データベース インスタンス。

    • Cloud SQL インスタンスの VPC ネットワークに、必要なサブネットがあります。

    • Cloud SQL は、データのコピー先となる Dataproc Metastore サービスで実行されている Hive メタストア バージョンと互換性のあるスキーマを持つデータベースを使用します。

    • Datastream のソースとして使用する Cloud SQL を設定します。Datastream を Cloud SQL に接続するためのユーザー名とパスワードを作成します。

必要なロール

Dataproc Metastore を作成してマネージド移行を開始するために必要な権限を取得するには、管理者に次の IAM ロールの付与を依頼します。

  • すべての Dataproc Metastore リソースに対する完全アクセス権を付与する(IAM 権限の設定を含む)場合: Dataproc Metastore のユーザー アカウントまたはサービス アカウントに対する Dataproc Metastore 管理者 roles/metastore.admin
  • Dataproc Metastore リソースに対する完全アクセス権を付与する場合: Dataproc Metastore のユーザー アカウントまたはサービス アカウントに対する Dataproc Metastore 編集者roles/metastore.editor
  • マネージド移行を作成する場合: Dataproc Metastore [サービス エージェント][7] に対する移行管理者roles/metastore.migrationAdmin
  • Datastream で Cloud Storage オブジェクトを使用する場合:

ロールの付与の詳細については、アクセスの管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

マネージド移行を構成する

Dataproc Metastore API を使用して移行を構成できます。

Dataproc Metastore サービスは、一度に単一の移行の実行のみできます。

移行を開始

移行を開始すると、Dataproc Metastore は Cloud SQL に接続し、Cloud SQL をバックエンド データベースとして使用します。このプロセス中に、Dataproc Metastore は、Cloud SQL から独自のデータベース(Spanner)にデータをコピーするパイプラインを実行します。

Dataproc Metastore では、完全な移行プロセスが呼び出されるまで、引き続き Cloud SQL をバックエンドとして使用し、データを複製します。

考慮事項

  • 移行プロセスが完了するまで、移行はアクティブなままになります。移行の完了の期限はありません。たとえば、移行には 1 日、30 日、1 年かかる可能性があります。

  • スケジュール バックアップは、移行中に制限されません。ただし、バックアップが不完全な可能性があります。問題を回避するために、移行中はスケジュール バックアップを無効にします。

移行を開始すると、次の状態の変化がトリガーされます。

  • Dataproc Metastore は、MIGRATING 状態に移行します。
  • 移行の実行状態が RUNNING に移行します。
  • 移行の実行フェーズが REPLICATION に移行します。

コンソール

スタートガイド

  1. Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。

    Dataproc Metastore を開く

  2. [Dataproc Metastore] ページで、移行先のサービスの名前をクリックします。

    サービスの詳細ページが開きます。

  3. ページ上部の [データを移行] をクリックします。

    [移行を作成] ページが開き、[接続] タブが開き、Dataproc Metastore の Cloud SQL データベース構成の構成設定が表示されます。

DPMS 用の Cloud SQL データベース構成

  1. [インスタンス接続名] に、Cloud SQL データベースのインスタンス接続名を PROJECT_ID/LOCATION/CLOUDSQL_INSTANCE_ID の形式で入力します。

  2. [IP アドレス] フィールドに、Cloud SQL インスタンスへの接続に必要な IP アドレスを入力します。

  3. [ポート] フィールドに「3306」と入力します。

  4. [Hive データベース名] フィールドに、セルフマネージド Hive メタストアのバックエンドとして使用されるデータベースの名前を入力します。

  5. [ユーザー名] フィールドに、Cloud SQL を Hive メタストアに接続するのに使用するユーザー名を入力します。

  6. [パスワード] フィールドに、Cloud SQL を Hive メタストアに接続するのに使用するパスワードを入力します。

SOCKS5 プロキシ サービス

  1. [プロキシ サブネット] フィールドに、Cloud SQL VPC ネットワークで使用されているサブネットワークを入力します。このサブネットは、中間 SOCKS5 プロキシのデプロイに使用されます。

  2. [NAT サブネット] フィールドに、Dataproc Metastore サービスから接続して中間プロキシにアクセスする Private Service Connect サブネットを入力します。サブネット サイズには、プレフィックスの長さを /29 以上にする必要があります。

  3. [続行] をクリックします。

    [変更データ キャプチャ(CDC)] タブが開き、[Datastream の Cloud SQL データベース構成] 構成設定が表示されます。

データ ストリーム用の Cloud SQL データベース構成

  1. [ユーザー名] フィールドに、Datastream で使用される Cloud SQL CDC へのログインに使用するユーザー名を入力します。

  2. [パスワード] フィールドに、Datastream で使用する Cloud SQL CDC へのログインに使用するパスワードを入力します。

  3. [VPC ネットワーク] フィールドに、CDC へのプライベート接続を確立するために Datastream によって使用される Cloud SQL インスタンスと同じ VPC ネットワーク内のネットワークを入力します。

  4. [サブネット IP 範囲] フィールドに、/29 以上のサブネット IP 範囲を入力します。データストリームでは、この IP を使用して VPC ネットワークへのピアリングを確立します。

  5. [リバース プロキシ サブネット] フィールドに、Cloud SQL と同じ VPC ネットワークで作成したサブネットワークを入力します。Datastream は、このサブネットワークを使用します。サブネットワークは、Datastream CDC 用のリバース プロキシ接続をホストするために使用されます。サブネットは、Dataproc Metastore サービスと同じリージョンに構成する必要があります。

GCS の設定

  1. [バケット ID] には、移行中に CDC データを保存する Cloud Storage のパスを選択します。

  2. [ルートパス] フィールドに、Cloud Storage バケット内のルートパスを入力します。ストリーム イベントデータは、このパスに書き込まれます。

  3. [作成] をクリックします。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
  -X POST -d \
  '{
    "migration_execution": {
      "cloud_sql_migration_config": {
        "cloud_sql_connection_config": {
          "instance_connection_name": INSTANCE_CONNECTION_NAME,
          "hive_database_name": "HIVE_DATABASE_NAME",
          "ip_address": "IP_ADDRESS",
          "port": 3306,
          "username": "CONNECTION_USERNAME",
          "password": "CONNECTION_PASSWORD",
          "proxy_subnet": "PROXY_SUBNET",
          "nat_subnet": "NAT_SUBNET"
        },
        "cdc_config": {
          "username": "CDC_USENAME",
          "password": "CDC_PASSWORD",
          "vpc_network": "VPC_NETWORK",
          "subnet_ip_range": "SUBNET_IP_RANGE",
          "reverse_proxy_subnet": "REVERSE_PROXY_SUBNET_ID",
          "bucket": "BUCKET_NAME",
          "root_path": "ROOT_PATH",
        }
      }
    }
}' \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:startMigration

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

  • SERVICE: Dataproc Metastore サービスの名前または ID。
  • PROJECT_ID: Dataproc Metastore サービスが存在する Google Cloud プロジェクトのプロジェクト ID。
  • LOCATION: Dataproc Metastore サービスが存在する Google Cloud リージョン。

Cloud SQL 移行の構成

  • INSTANCE_CONNECTION_NAME: Cloud SQL データベースのインスタンス接続名(PROJECT_ID/LOCATION/CLOUDSQL_INSTANCE_ID の形式)。
  • HIVE_DATABASE_NAME: Cloud SQL に接続されたセルフマネージド Hive データベースの名前。
  • IP_ADDRESS: Cloud SQL インスタンスへの接続に必要な IP アドレス。
  • CONNECTION_USERNAME: Cloud SQL を Hive メタストアに接続するのに使用するユーザー名。
  • CONNECTION_PASSWORD は、Cloud SQL を Hive メタストアに接続するのに使用するパスワード。
  • PROXY_SUBNET: Cloud SQL VPC ネットワークで使用されるサブネットワーク。このサブネットワークは、中間プロキシをホストして、推移的ネットワーク間の接続を提供します。
  • NAT_SUBNET: Dataproc Metastore サービスからの接続を提供し、中間プロキシにアクセスできるようにする Private Service Connect サブネット。サブネット サイズのプレフィックスの長さは /29 以上IPv4 範囲でなければなりません。

CDC の構成

  • CDC_USERNAME: Datastream サービスが Cloud SQL へのログインに使用するユーザー名。
  • CDC_PASSWORD: Datastream サービスが Cloud SQL へのログインに使用するパスワード。
  • VPC_NETWORK: CDC へのプライベート接続を確立するために Datastream が使用する Cloud SQL インスタンスと同じ VPC ネットワーク内のネットワーク。
  • SUBNET_IP_RANGE: VPC ネットワークとのピアリングを確立するためにデータストリームが使用する、/29 以上のサブネット IP 範囲。
  • REVERSE_PROXY_SUBNET_ID: Datastream で使用される Cloud SQL インスタンスと同じ VPC ネットワーク内のサブネットワーク。サブネットワークは、Datastream CDC 用のリバース プロキシ接続をホストするために使用されます。サブネットは、Dataproc Metastore サービスと同じリージョンに構成する必要があります。
  • BUCKET_NAME: 移行時に CDC データを保存する Cloud Storage パス。
  • ROOT_PATH: Cloud Storage バケット内のルートパス。ストリーム イベントデータは、このパスに書き込まれます。

移行を完了する

移行が完了すると、Dataproc Metastore は Spanner に接続し、Spanner をバックエンド データベースとして使用し始めます。

移行が完了すると、次の状態が変化します。

  • Dataproc Metastore が ACTIVE 状態に戻ります。
  • 移行の実行状態が SUCCEEDED に移行します。

コンソール

  1. Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。

  2. ページ上部の [データを移行] をクリックします。

    [データを移行] ページが開き、完了したマネージド移行が表示されます。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
  -X POST -d '' \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:completeMigration

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

  • SERVICE: Dataproc Metastore サービスの名前または ID。
  • PROJECT_ID: Dataproc Metastore サービスが存在する Google Cloud プロジェクトのプロジェクト ID。
  • LOCATION: Dataproc Metastore サービスが存在する Google Cloud リージョン。

移行をキャンセル

移行をキャンセルすると、Dataproc Metastore は変更を元に戻し、バックエンド データベースとして Spanner データベース タイプの使用を開始します。移行中に転送されたデータは削除されます。

移行のキャンセルにより、次の状態の変化がトリガーされます。

  • Dataproc Metastore が ACTIVE 状態に戻ります。
  • 移行の実行状態が CANCELLED に移行します。

コンソール

  1. Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。

  2. ページ上部の [データを移行] をクリックします。

    [データを移行] ページが開き、キャンセルしたマネージド移行が表示されます。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
   -X POST -d '' \
   https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:cancelMigration

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

  • SERVICE_NAME: Dataproc Metastore サービスの名前または ID。
  • PROJECT_ID: Dataproc Metastore サービスが存在する Google Cloud プロジェクトのプロジェクト ID。
  • LOCATION: Dataproc Metastore サービスが存在する Google Cloud リージョン。

移行の詳細を取得する

単一のマネージド移行の詳細を取得します。

コンソール

  1. Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。

  2. ページ上部の [データを移行] をクリックします。

    [データを移行] ページが開き、マネージド移行が表示されます。

    移行の詳細を取得するには、マネージド移行の名前をクリックします。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X GET \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

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

  • SERVICE: Dataproc Metastore サービスの名前または ID。
  • PROJECT_ID: Dataproc Metastore サービスが存在する Google Cloud プロジェクトのプロジェクト ID。
  • LOCATION: Dataproc Metastore サービスが存在する Google Cloud リージョン。
  • MIGRATION_ID: Dataproc Metastore 移行の名前または ID。

移行を一覧表示する

マネージド移行を一覧表示します。

コンソール

  1. Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。

  2. ページ上部の [データを移行] をクリックします。

    [データを移行] ページが開き、マネージド移行が表示されます。

  3. コマンドによって移行が一覧表示されたことを確認します。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X GET \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

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

  • SERVICE: Dataproc Metastore サービスの名前または ID。
  • PROJECT_ID: Dataproc Metastore サービスが存在する Google Cloud プロジェクトのプロジェクト ID。
  • LOCATION: Dataproc Metastore サービスが存在する Google Cloud リージョン。

移行の削除

マネージド移行を削除します。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X DELETE \
   https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

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

  • SERVICE: Dataproc Metastore サービスの名前または ID。
  • PROJECT_ID: Dataproc Metastore サービスが存在する Google Cloud プロジェクトのプロジェクト ID。
  • LOCATION: Dataproc Metastore サービスが存在する Google Cloud リージョン。
  • MIGRATION_ID: Dataproc Metastore 移行の名前または ID。

次のステップ