Database Migration Service は、移行ジョブを使用して、移行元のデータベース インスタンスから移行先のデータベース インスタンスにデータを移行します。既存の移行先インスタンスの移行ジョブの作成には、次の手順が含まれます。
- 移行ジョブの設定を定義します
- 移行元データベースの接続プロファイルの選択
- 既存の移行先データベース インスタンスの選択
- 既存のインスタンスを降格してリードレプリカに変換する
- 移行元データベースと移行先データベースのインスタンス間の接続を設定します
- 移行ジョブをテストして、ジョブに指定した接続情報が有効であることを確認します
Database Migration Service の外部で作成された移行先インスタンスに移行する場合は、考慮すべき特定の制限事項があります。たとえば、Cloud SQL の宛先インスタンスは空であるか、システム構成データのみを含む必要があります。詳細については、既知の制限事項をご覧ください。
移行ジョブの設定を定義する
- Google Cloud コンソールで、[移行ジョブ] ページに移動します。
- [移行ジョブを作成] をクリックします。
移行ジョブ構成ウィザードのページが開きます。このウィザードには、各構成ステップを案内する複数のパネルがあります。
[保存して終了] をクリックすると、移行ジョブの作成を一時停止できます。その時点で入力したデータはすべて、下書きの移行ジョブに保存されます。下書きの移行ジョブは後で完了できます。
- [開始] ページで、次の情報を入力します。
- 移行ジョブ名
これは、移行ジョブのわかりやすい名前です。この値は、 Google Cloud コンソールに表示されます。
- 移行ジョブ ID
これは、移行ジョブの機械読み取り可能な識別子です。この値は、Database Migration Service の Google Cloud CLI コマンドまたは API を使用して移行ジョブを操作する場合に使用します。
- [移行元データベース エンジン] リストから [MySQL] を選択します。
[移行先のデータベース エンジン] フィールドには自動的に入力され、変更できません。
- 移行ジョブを保存するリージョンを選択します。
Database Migration Service は完全にリージョン ベースのサービスです。つまり、移行に関連するすべてのエンティティ(移行元と移行先の接続プロファイル、移行ジョブ、移行先データベース)を 1 つのリージョンに保存する必要があります。Compute Engine インスタンス、App Engine アプリ、その他のサービスなど、データを必要とするサービスのロケーションに基づいてリージョンを選択します。宛先リージョンを選択した後、この選択を変更することはできません。
- 移行ジョブ名
- [保存して次へ] をクリックします。
ソース接続プロファイルに関する情報の指定
[ソースを定義する] ページで、次の操作を行います。
- [ソース接続プロファイル] プルダウン メニューから、移行元データベースの接続プロファイルを選択します。
- [完全なダンプの構成のカスタマイズ] セクションで、[構成の編集] をクリックします。
- [完全ダンプ構成を編集] パネルの [完全ダンプ方法] プルダウン メニューから、次のいずれかを選択します。
- 物理ベース: Percona XtraBackup ユーティリティを使用して独自のバックアップ ファイルを提供する場合は、このオプションを選択します。この方法では、追加の準備手順が必要になります。Percona XtraBackup によって生成された物理バックアップ ファイルの使用に関するガイドについては、 Percona XtraBackup 物理ファイルを使用してデータベースを移行するをご覧ください。
- 論理ベース:
mysqldump
ユーティリティによって作成された論理バックアップ ファイルを使用する場合は、このオプションを選択します。このバックアップ ファイルは、Database Migration Service によって自動生成することも、独自のコピーを指定することもできます。
- ダンプ設定の残りの部分を編集します。次のいずれかを行います。
- 物理バックアップ ファイルを使用する場合は、[フォルダを指定] で [参照] をクリックし、完全なダンプ ファイルをアップロードしたフォルダを選択します。ストレージ バケット自体ではなく、完全なバックアップ ファイルを含む専用のフォルダを選択してください。
論理バックアップ ファイルを使用する場合は、データダンプ並列処理またはダンプフラグを構成します。
論理バックアップ ファイルの完全な手順については、このセクションを展開してください。
[ダンプファイルの生成方法の選択] セクションで、次のいずれかのオプションを使用します。
自動生成(推奨)
Database Migration Service は、移行ジョブの作成と開始後に常に初期データベース ダンプ ファイルを生成するため、このオプションをおすすめします。
Database Migration Service は、このファイルを使用して移行元データベースの元のオブジェクト定義とテーブルデータを再現し、この情報を移行先の Cloud SQL データベース インスタンスに移行できるようにします。
自動生成ダンプを使用する場合は、[データ ダンプ オペレーションを構成する] セクションで、Database Migration Service が実行するオペレーションのタイプを選択します。
- データダンプ並列処理: MySQL バージョン 5.7 または 8 に移行する場合に使用できる、高パフォーマンスの並列処理オプションを使用します。
データ並列処理の速度は、ソース データベースに誘導される負荷の量に関連しています。
- 最適(推奨): ソース データベースへの負荷が最適な状態で、バランスの取れたパフォーマンスが実現します。
- 最大: ダンプ速度が最も速くなりますが、ソース データベースの負荷が増加する可能性があります。
- 最小: ソース データベースで消費されるコンピューティング リソースが最小になりますが、ダンプ スループットが低下する可能性があります。
- ダンプ フラグ: このオプションは、データ ダンプ並列処理と排他的です。この設定を使用すると、ダンプファイルの作成に使用される
mysqldump
ユーティリティのフラグを直接構成できます。フラグを追加するには:
- [フラグを追加] をクリックします。
次のいずれかのフラグを選択します。
add-locks:
このフラグは、ダンプファイルに含まれる各テーブルをLOCK TABLES
ステートメントとUNLOCK TABLES
ステートメントで囲みます。これにより、ダンプ ファイルが移行先インスタンスに読み込まれるときの挿入が高速化されます。ignore-error:
このフラグを使用すると、カンマ区切りのエラー番号のリストを入力できます。これらの数値は、mysqldump
ユーティリティが無視するエラーを表します。max-allowed-packet:
このフラグは、MySQL クライアントとソース MySQL データベース間の通信用のバッファの最大サイズを設定するために使用します。バッファのデフォルトサイズは 24 MB、最大サイズは 1 GB です。
- [完了] をクリックします。
- 追加するフラグごとに、上記の手順を繰り返します。
フラグを削除するには、フラグを含む行の右側にあるゴミ箱アイコンをクリックします。
- データダンプ並列処理: MySQL バージョン 5.7 または 8 に移行する場合に使用できる、高パフォーマンスの並列処理オプションを使用します。
独自の画像を指定します
デフォルトでは、Database Migration Service は移行ジョブの実行の一環として初期ダンプを行うため、このオプションは推奨されません。
独自のダンプファイルを使用する場合は、[独自のダンプファイルを指定する] を選択し、[参照] をクリックして、ファイル(複数のファイルを使用する場合は Cloud Storage フォルダ全体)を選択し、[選択] をクリックします。
ダンプが 24 時間以内に生成され、 ダンプ要件に準拠していることを確認してください。
- [保存して次へ] をクリックします。
宛先の Cloud SQL インスタンスを選択する
- [宛先インスタンスのタイプ] メニューから、[既存のインスタンス] を選択します。
- [宛先インスタンスの選択] セクションで、宛先インスタンスを選択します。
- [インスタンスの詳細] セクションで情報を確認して、[選択して続行] をクリックします。
- 既存の移行先データベースに移行するには、Database Migration Service はターゲット インスタンスを降格させ、レプリカに変換します。降格を安全に実行できることを示すには、確認ウィンドウで移行先インスタンス ID を入力します。
- [確認して次へ] をクリックします。
移行元データベースと移行先データベースのインスタンス間の接続を設定する
[接続方法] プルダウン メニューから、ネットワーク接続方法を選択します。この方法により、新しく作成された Cloud SQL インスタンスがソース データベースに接続される方法が定義されます。現在のネットワーク接続方法には、IP 許可リスト、リバース SSH トンネル、VPC ピアリングがあります。
使用したい場合 | 方法 |
---|---|
IP 許可リストのネットワーク接続方法 | 移行先インスタンスの送信 IP アドレスを指定する必要があります。作成した Cloud SQL インスタンスが高可用性インスタンスの場合は、プライマリ インスタンスとセカンダリ インスタンスの両方の送信 IP アドレスを含めます。 |
リバース SSH トンネル ネットワーク接続方法 | トンネルをホストする Compute Engine VM インスタンスを選択する必要があります。 インスタンスを指定すると、移行元データベースと移行先データベースの間にトンネルを設定する手順を実行するスクリプトが提供されます。スクリプトは Google Cloud CLI で実行する必要があります。 ソース データベースと Google Cloudの両方に接続できるマシンからコマンドを実行します。 |
VPC ピアリング ネットワーク接続方法。 | 移行元データベースが存在する VPC ネットワークを選択する必要があります。このネットワークに接続するように Cloud SQL インスタンスが更新されます。 |
ネットワーク接続を選択して構成したら、[構成して続行] をクリックします。
移行ジョブをテスト、作成、実行する
この最後のステップでは、移行ジョブの設定、ソース、宛先、接続方法の概要を確認し、移行ジョブの設定の有効性をテストします。問題が発生した場合は、移行ジョブの設定を変更できます。すべての設定を編集できるわけではありません。
-
[移行ジョブのテストと作成] ページで、[ジョブをテスト] をクリックします。
テストに失敗した場合は、フローの適切な部分で問題に対処してから、再テストに戻ることができます。失敗した移行ジョブのテストに関するトラブルシューティングについては、 MySQL の問題を診断するをご覧ください。
-
移行ジョブのテストが完了したら、[ジョブを作成して開始] をクリックして移行ジョブを作成してすぐに開始するか、[ジョブを作成] をクリックして移行ジョブを作成してすぐに開始しないでください。
ジョブが作成時に開始されていない場合は、[移行ジョブ] ページで [開始] をクリックして開始できます。移行ジョブの開始時間に関係なく、移行先インスタンスの存在に対して料金が発生します。
移行が開始されました。移行ジョブを開始すると、Database Migration Service は完全なダンプを行い、移行元データベースを一時的にロックします。移行元が Amazon RDS または Amazon Aurora にある場合、Database Migration Service では、移行の開始時に短時間(約 1 分未満)の書き込みダウンタイムも必要です。詳細については、既知の制限事項をご覧ください。
- 移行ジョブを確認するに進みます。
Google Cloud CLI を使用して移行ジョブを作成する
Google Cloud CLI を使用して既存のインスタンスに移行する場合は、移行先インスタンスの接続プロファイルを手動で作成する必要があります。 Google Cloud コンソールを使用する場合は、Database Migration Service が移行先接続プロファイルの作成と削除を処理するため、これは必要ありません。
始める前に
gcloud CLI を使用して既存の移行先データベース インスタンスへの移行ジョブを作成する前に、次の点を確認してください。
- 移行先データベース インスタンスを作成します。
- 移行元データベース インスタンスを準備します。以下をご覧ください。
- ソースを構成する
- ソース接続プロファイルを作成する(移行ジョブの作成には、ソース接続プロファイル ID が必要です)。
- 接続を構成する
移行先の接続プロファイルを作成する
gcloud database-migration connection-profiles create
コマンドを実行して、既存の移行先インスタンスの宛先接続プロファイルを作成します。
このサンプルでは、オプションの --no-async
フラグを使用して、すべてのオペレーションが同期的に実行されます。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-async
フラグをスキップして、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describe
コマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。
後述のコマンドデータを使用する前に、次のように置き換えます。
- CONNECTION_PROFILE_ID は、接続プロファイルの機械読み取り可能な識別子に置き換えます。
- REGION は、接続プロファイルを保存するリージョンの ID に置き換えます。
- DESTINATION_INSTANCE_ID は、宛先インスタンスのインスタンス ID に置き換えます。
- (省略可)CONNECTION_PROFILE_NAME は、接続プロファイルのわかりやすい名前に置き換えます。この値は、 Google Cloud コンソールに表示されます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration connection-profiles \ create mysql CONNECTION_PROFILE_ID \ --no-async \ --cloudsql-instance=DESTINATION_INSTANCE_ID \ --region=REGION \ --display-name=CONNECTION_PROFILE_NAME
Windows(PowerShell)
gcloud database-migration connection-profiles ` create mysql CONNECTION_PROFILE_ID ` --no-async ` --cloudsql-instance=DESTINATION_INSTANCE_ID ` --region=REGION ` --display-name=CONNECTION_PROFILE_NAME
Windows(cmd.exe)
gcloud database-migration connection-profiles ^ create mysql CONNECTION_PROFILE_ID ^ --no-async ^ --cloudsql-instance=DESTINATION_INSTANCE_ID ^ --region=REGION ^ --display-name=CONNECTION_PROFILE_NAME
次のようなレスポンスが返されます。
Waiting for connection profile [CONNECTION_PROFILE_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
移行ジョブを作成する
このサンプルでは、オプションの --no-async
フラグを使用して、すべてのオペレーションが同期的に実行されます。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-async
フラグをスキップして、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describe
コマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。
後述のコマンドデータを使用する前に、次のように置き換えます。
- MIGRATION_JOB_ID は、移行ジョブの機械読み取り可能な識別子に置き換えます。この値は、Database Migration Service の Google Cloud CLI コマンドまたは API を使用して移行ジョブを操作する場合に使用します。
- REGION は、移行ジョブを保存するリージョン ID に置き換えます。
- MIGRATION_JOB_NAME は、移行ジョブのわかりやすい名前に置き換えます。この値は、 Google Cloud コンソールの Database Migration Service に表示されます。
- SOURCE_CONNECTION_PROFILE_ID は、ソース接続プロファイルの機械読み取り可能な識別子に置き換えます。
- DESTINATION_CONNECTION_PROFILE_ID は、移行先接続プロファイルの機械読み取り可能な ID に置き換えます。
- MIGRATION_JOB_TYPE は、移行ジョブのタイプに置き換えます。使用できる値は
ONE_TIME
またはCONTINUOUS
の 2 つです。詳細については、 移行のタイプをご覧ください。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration migration-jobs \ create MIGRATION_JOB_ID \ --no-async \ --region=REGION \ --display-name=MIGRATION_JOB_NAME \ --source=SOURCE_CONNECTION_PROFILE_ID \ --destination=DESTINATION_CONNECTION_PROFILE_ID \ --type=MIGRATION_JOB_TYPE \
Windows(PowerShell)
gcloud database-migration migration-jobs ` create MIGRATION_JOB_ID ` --no-async ` --region=REGION ` --display-name=MIGRATION_JOB_NAME ` --source=SOURCE_CONNECTION_PROFILE_ID ` --destination=DESTINATION_CONNECTION_PROFILE_ID ` --type=MIGRATION_JOB_TYPE `
Windows(cmd.exe)
gcloud database-migration migration-jobs ^ create MIGRATION_JOB_ID ^ --no-async ^ --region=REGION ^ --display-name=MIGRATION_JOB_NAME ^ --source=SOURCE_CONNECTION_PROFILE_ID ^ --destination=DESTINATION_CONNECTION_PROFILE_ID ^ --type=MIGRATION_JOB_TYPE ^
次のようなレスポンスが返されます。
Waiting for migration job [MIGRATION_JOB_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created migration job MIGRATION_JOB_ID [OPERATION_ID]
移行先データベースの降格
Database Migration Service では、移行中は移行先データベース インスタンスがリードレプリカとして機能する必要があります。移行ジョブを開始する前に、gcloud database-migration migration-jobs demote-destination
コマンドを実行して移行先データベース インスタンスを降格します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- MIGRATION_JOB_ID は、移行ジョブ ID に置き換えます。
ID がわからない場合は、
gcloud database-migration migration-jobs list
コマンドを使用して、特定のリージョン内のすべての移行ジョブを一覧表示し、ID を表示できます。 - REGION は、接続プロファイルが保存されているリージョンの ID に置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration migration-jobs \ demote-destination MIGRATION_JOB_ID \ --region=REGION
Windows(PowerShell)
gcloud database-migration migration-jobs ` demote-destination MIGRATION_JOB_ID ` --region=REGION
Windows(cmd.exe)
gcloud database-migration migration-jobs ^ demote-destination MIGRATION_JOB_ID ^ --region=REGION
結果
アクションは非同期で実行されます。そのため、このコマンドは長時間実行オペレーションを表す オペレーション エンティティを返します。
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: demote-destination name: OPERATION_ID
オペレーションが成功したかどうかを確認するには、返されたオペレーション オブジェクトをクエリするか、移行ジョブのステータスを確認します。
-
gcloud database-migration migration-jobs describe
コマンドを使用して、移行ジョブのステータスを表示します。 - OPERATION_ID で
gcloud database-migration operations describe
を使用して、オペレーション自体のステータスを確認します。
移行ジョブの管理
この時点で、移行ジョブが構成され、移行先データベース インスタンスに接続されます。verify
、start
、stop
、restart
、resume
オペレーションを使用して管理できます。
移行ジョブを確認する
最初に、gcloud database-migration migration-jobs verify
コマンドを実行して移行ジョブを確認することをおすすめします。
後述のコマンドデータを使用する前に、次のように置き換えます。
- MIGRATION_JOB_ID は、移行ジョブ ID に置き換えます。
ID がわからない場合は、
gcloud database-migration migration-jobs list
コマンドを使用して、特定のリージョン内のすべての移行ジョブを一覧表示し、ID を表示できます。 - REGION は、接続プロファイルが保存されているリージョンの ID に置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration migration-jobs \ verify MIGRATION_JOB_ID \ --region=REGION
Windows(PowerShell)
gcloud database-migration migration-jobs ` verify MIGRATION_JOB_ID ` --region=REGION
Windows(cmd.exe)
gcloud database-migration migration-jobs ^ verify MIGRATION_JOB_ID ^ --region=REGION
結果
アクションは非同期で実行されます。そのため、このコマンドは長時間実行オペレーションを表す オペレーション エンティティを返します。
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: verify name: OPERATION_ID
オペレーションが成功したかどうかを確認するには、返されたオペレーション オブジェクトをクエリするか、移行ジョブのステータスを確認します。
- MIGRATION_JOB_ID で
gcloud database-migration migration-jobs describe
コマンドを使用して、移行ジョブのステータスを表示します。 - オペレーション自体のステータスを確認するには、OPERATION_ID で
gcloud database-migration operations describe
コマンドを使用します。
移行ジョブを開始する
gcloud database-migration migration-jobs start
コマンドを実行して移行ジョブを開始します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- MIGRATION_JOB_ID は、移行ジョブ ID に置き換えます。
ID がわからない場合は、
gcloud database-migration migration-jobs list
コマンドを使用して、特定のリージョン内のすべての移行ジョブを一覧表示し、ID を表示できます。 - REGION は、接続プロファイルが保存されているリージョンの ID に置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration migration-jobs \ start MIGRATION_JOB_ID \ --region=REGION
Windows(PowerShell)
gcloud database-migration migration-jobs ` start MIGRATION_JOB_ID ` --region=REGION
Windows(cmd.exe)
gcloud database-migration migration-jobs ^ start MIGRATION_JOB_ID ^ --region=REGION
結果
アクションは非同期で実行されます。そのため、このコマンドは長時間実行オペレーションを表す オペレーション エンティティを返します。
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: start name: OPERATION_ID
オペレーションが成功したかどうかを確認するには、返されたオペレーション オブジェクトをクエリするか、移行ジョブのステータスを確認します。
- MIGRATION_JOB_ID で
gcloud database-migration migration-jobs describe
コマンドを使用して、移行ジョブのステータスを表示します。 - オペレーション自体のステータスを確認するには、OPERATION_ID で
gcloud database-migration operations describe
コマンドを使用します。
移行ジョブを昇格させる
移行が変更データ キャプチャ(CDC)フェーズに達したら、移行先データベース インスタンスを読み取りレプリカからスタンドアロン インスタンスに昇格できます。gcloud database-migration migration-jobs promote
コマンドを実行します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- MIGRATION_JOB_ID は、移行ジョブ ID に置き換えます。
ID がわからない場合は、
gcloud database-migration migration-jobs list
コマンドを使用して、特定のリージョン内のすべての移行ジョブを一覧表示し、ID を表示できます。 - REGION は、接続プロファイルが保存されているリージョンの ID に置き換えます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration migration-jobs \ promote MIGRATION_JOB_ID \ --region=REGION
Windows(PowerShell)
gcloud database-migration migration-jobs ` promote MIGRATION_JOB_ID ` --region=REGION
Windows(cmd.exe)
gcloud database-migration migration-jobs ^ promote MIGRATION_JOB_ID ^ --region=REGION
結果
アクションは非同期で実行されます。そのため、このコマンドは長時間実行オペレーションを表す オペレーション エンティティを返します。
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: start name: OPERATION_ID
- MIGRATION_JOB_ID で
gcloud database-migration migration-jobs describe
コマンドを使用して、移行ジョブのステータスを表示します。 - オペレーション自体のステータスを確認するには、OPERATION_ID で
gcloud database-migration operations describe
コマンドを使用します。