始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Update DEFINER clauses to INVOKER on the MySQL source instance.
/ 10
Create and save a Database Migration Service job without starting the job.
/ 20
Create users on the Cloud SQL destination instance.
/ 10
Start a previously created Database Migration Service job.
/ 10
Confirm the user metadata in Cloud SQL for MySQL
/ 10
Database Migration Service は、スキーマ、データ、メタデータなどの MySQL データベース オブジェクトを、移行元から移行先のインスタンスへ効率的に移行します。移行ジョブを実行すると、sys、mysql、performance_schema、information_schema といったシステム データベースを除き、すべてのデータベースとスキーマに含まれるすべてのテーブルが移行されます。
ユーザーと権限に関する情報は、MySQL システム データベース内に保持されます。Database Migration Service のジョブでは、これらのシステム データベースは移行されないため、移行先の Cloud SQL インスタンスの作成後に、ユーザーと権限を管理する必要があります。移行の忠実性の詳細については、移行の忠実性ガイドをご覧ください。
オブジェクトの DEFINER 句で指定されたユーザーが移行先インスタンスに存在しない場合、移行後にオブジェクトの呼び出しが失敗することがあります。詳細については、DEFINER 句を含むメタデータを含む MySQL 移行ジョブを作成して実行するガイドをご覧ください。
移行後に移行先インスタンスでオブジェクトを呼び出すときにエラーが発生しないようにするには、移行ジョブを実行する前に次のいずれかの操作を行います。
DEFINER 句に関連付けられているすべてのユーザーが移行先に存在することが保証されます。DEFINER 句を INVOKER に変更します。これにより、移行先のデータアクセスに対するセキュリティ権限が、オブジェクトを定義したユーザーの権限ではなく、クエリを実行するユーザーの権限に設定されます。これらの前提条件を満たしたら、Database Migration Service ジョブを作成して保存し、保存したジョブを開始します。移行が正常に完了したら、最後のステップとして Cloud SQL for MySQL インスタンスでユーザー メタデータを検証します。
このラボでは、Database Migration Service ジョブの実行時に MySQL ユーザーデータを移行する方法を学習します。
DEFINER 句を INVOKER に更新する。こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
Google Cloud コンソールのタイトルバーにある [検索] フィールドに「Database Migration API」と入力し、検索結果から [Database Migration API] をクリックします。
必要に応じて、[有効にする] をクリックして API を有効にします。
他の Cloud リソースと同様に、移行先の Cloud SQL インスタンスに対するアクセスと権限は、Identity and Access Management(IAM)を使用してプロジェクト レベルで制御されます。詳細については、Cloud SQL の IAM ガイドをご覧ください。
このタスクでは、データベース アクセス制御(管理者やスーパーユーザーなど)を通じて管理されるデータベース ユーザーを特定します。これらのユーザー(IAM で管理されるユーザーとは異なります)は、広範な IAM アクセス権が付与される前に、移行ジョブの結果をテストするため、移行先の Cloud SQL インスタンスへのアクセスが必要になる場合があります。詳細については、MySQL ユーザーについてをご覧ください。
Google Cloud コンソールのタイトルバーのナビゲーション メニュー()で、[Compute Engine] > [VM インスタンス] をクリックします。
dms-mysql-training-vm という名前のインスタンスが示されている行を見つけます。
[接続] で、[SSH] をクリックしてターミナル ウィンドウを開きます。
プロンプトが表示されたら、[承認] をクリックします。
SSH ウィンドウに表示されるアップグレードに関する警告は無視してかまいません。
debian-sys-maint、mysql.session、mysql.sys という名前のシステム ユーザーに注目してください。これらのユーザーは、移行先インスタンスの作成時に MySQL によって作成されるため、再作成する必要はありません。
| ホスト | ユーザー |
|---|---|
| localhost | admin |
| % | admin |
| localhost | bsmith |
| localhost | dwilliams |
| localhost | mhill |
| localhost | root |
| % | root |
後のタスクで、Database Migration Service ジョブの実行時に root ユーザーを作成します。移行ジョブによって Cloud SQL 移行先インスタンスが作成された後に、他のユーザーも作成します。
前のタスクでは、移行元インスタンスの既存の MySQL ユーザーを特定しました。このタスクでは、root や移行先インスタンスにまだ存在しない他のユーザーに対応する DEFINER エントリを含むデータベース オブジェクトを特定して更新します。
移行元インスタンスのユーザーが移行先インスタンスに作成されていない場合は、関連付けられているすべての DEFINER エントリを INVOKER に変更する必要があります。具体的には、root に対応する DEFINER エントリは、admin などの別のユーザーを使用して INVOKER に更新する必要があります。
これらのアクションにより、移行後に移行先インスタンスでオブジェクトが呼び出されたときにエラーが発生するのを防ぐことができます(DEFINER 句を含むメタデータを含む MySQL 移行ジョブを作成して実行するガイドで追加のドキュメントを確認してください)。
MySQL インスタンスの DEFINER に関する情報を取得するには、INFORMATION_SCHEMA テーブルに対してクエリを実行して、移行前に確認が必要な DEFINER エントリを特定します(たとえば、mysql などのシステム データベースに関連付けられていないために、移行先インスタンスに移行される DEFINER エントリなど)。
DEFINER エントリを特定します。結果に、イベント、ルーティン、トリガー、ビューの DEFINER エントリを確認する必要があることが示されます。
DEFINER エントリの中には、システム ユーザーに関連付けられているものもありますが、これについて追加の操作を行う必要はありません。これらのシステム ユーザーは、さまざまなデータベース オブジェクトの DEFINER エントリを特定するためのクエリから除外されます。
DEFINER を特定します。システム ユーザー以外のユーザーに関連付けられたイベントには、DEFINER のインスタンスは含まれていません。
DEFINER を特定します。システム ユーザー以外のユーザーに関連付けられたルーティンには、DEFINER のインスタンスは含まれていません。
DEFINER を特定します。システム ユーザー以外のユーザーに関連付けられたトリガーには、DEFINER のインスタンスは含まれていません。
DEFINER を特定します。| definer | security_type | table_schema | table_name |
|---|---|---|---|
| admin@localhost | DEFINER |
customers_data | customers_single |
| admin@localhost | DEFINER |
sales_data | invoices_storenum_5173 |
| bsmith@localhost | DEFINER |
customers_data | customers_married |
| bsmith@localhost | DEFINER |
sales_data | invoices_storenum_3980 |
| mhill@localhost | DEFINER |
sales_data | invoices_storenum_3656 |
次のセクションで、このビューの DEFINER を INVOKER に更新します。
前のタスクで特定したユーザーのうちの 1 人(dwilliams)は、ビューの DEFINER エントリに関連付けられていないことに注目してください。また、root ユーザーに対応する DEFINER インスタンスがないことにも注目してください。dwilliams と root のどちらについても、対応は不要です。
このサブタスクでは、mhill に関連付けられた DEFINER エントリを INVOKER に更新します。
DEFINER を INVOKER に更新します。DEFINER エントリをもう一度確認すると、ビューが INVOKER で更新されていることがわかります。mhill に関連付けられた DEFINER エントリが INVOKER に更新されている一方で、admin と bsmith に関連付けられた DEFINER エントリはそのままの状態になっています。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
DEFINER 句を INVOKER に更新する。
このタスクでは、移行ジョブを作成し、そのジョブを開始せずに保存します。具体的には、接続オプションとして VPC ピアリングを使用した 1 回限りの移行ジョブを作成します。ただし、任意の移行ジョブを作成して保存し、後で実行することもできます。
これにより、移行先 Cloud SQL インスタンスで新しいユーザーを作成するなどの必要なタスクが完了するまでデータを移行せずに、移行先インスタンスを作成できます。
Google Cloud コンソールのナビゲーション メニュー()で、[Compute Engine] > [VM インスタンス] をクリックします。
dms-mysql-training-vm という名前のインスタンスが示されている行を見つけます。
内部 IP の値(10.128.0.2 など)をコピーします。
コンソールのタイトルバーにある [検索] フィールドに「データベースの移行」と入力し、検索結果から [データベースの移行] をクリックします。
左側のペインで [接続プロファイル] をクリックし、[プロファイルを作成] をクリックします。
以下の必須の接続プロファイル情報を設定し、それ以外の設定はすべてデフォルトのままにします。
| プロパティ | 値 |
|---|---|
| プロファイル ロール | ソース |
| データベース エンジン | MySQL |
| 接続プロファイルの名前 | mysql-vm |
| 接続プロファイル ID | 自動生成された値をそのまま使用します。 |
| ホスト名または IP アドレス | 前のタスクでコピーした MySQL 移行元インスタンスの内部 IP(10.128.0.2 など)を入力します。 |
| ポート | 3306 |
| ユーザー名 | admin |
| パスワード | changeme! |
| リージョン |
接続プロファイル リストに、mysql-vm という名前の新しい接続プロファイルが表示されます。
左側のペインで [移行ジョブ] をクリックし、[移行ジョブを作成] をクリックします。
[移行ジョブの作成] の [開始] タブで、次の値を設定します。
| プロパティ | 値 |
|---|---|
| 移行ジョブ名 | vm-to-cloudsql |
| 移行ジョブ ID | 自動生成された値をそのまま使用します。 |
| 移行元データベース エンジン | MySQL |
| 宛先リージョン | |
| 移行ジョブの種類 | 1 回限り |
その他の設定はすべてデフォルトのままにします。
[ソースの定義] タブの [ソース接続プロファイル] で、[mysql-vm] を選択します。
他の設定はデフォルトのままにします。
[保存して続行] をクリックします。
[移行先の定義] タブの [移行先クラスタのタイプ] で、[既存のインスタンス] を選択します。
移行先インスタンスとして
[選択して続行] をクリックします。
インスタンス名をもう一度入力し、[確認して続行] をクリックします。
注: このステップが完了するまでに数分かかる場合があります。
リクエストを再試行するよう求められた場合は、[再試行] ボタンをクリックして、Service Networking API を更新します。
再試行を求めるプロンプトなしでエラーが表示された場合は、ラボの設定と要件のセクションの手順を完了して Service Networking API が有効になっていることを確認してください。
このステップが完了すると、メッセージが更新されて、「このインスタンスは、既存のマネージド サービス接続を使用します」と示されます。
保存には数分かかることがあります。
[接続方法の定義] タブの [接続方法] で、[VPC ピアリング] を選択します。
[VPC] で [デフォルト] を選択します。
Database Migration Service により、VPC ネットワーク(この例ではデフォルト ネットワーク)に対して指定されている情報を使用して VPC ピアリングが構成されます。
移行ジョブの詳細を確認します。
[ジョブを作成] をクリックします。
この移行ジョブをテストする必要はありません。現時点では、ジョブをテストするとエラー メッセージが表示されます。移行先インスタンスでまだ作成されていないユーザーに関連付けられた DEFINER エントリがあるためです。これらのユーザーは次のタスクで作成します。
移行ジョブが作成されても、まだジョブは開始されません。後のタスクで Cloud SQL の移行先インスタンスで新しいユーザーを作成してから、ジョブを開始します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Cloud SQL で移行ジョブを実行する前に、必要な MySQL ユーザーを作成する必要があります。これには、IAM を介してより広範なアクセス権を付与する前に移行結果をテストするための、管理者やスーパーユーザーなどのユーザーが含まれます。また、移行を開始する前に、DEFINER 句に関連付けられたユーザーを作成する必要があります。
このタスクでは、admin、bsmith、mhill という名前のユーザーを作成します。
Google Cloud コンソールのタイトルバーにある [検索] フィールドに「Cloud SQL」と入力し、検索結果から [Cloud SQL] をクリックします。
mysql-cloudsql-master インスタンスを開き、mysql-cloudsql インスタンスをクリックします。
[レプリカ インスタンス] メニューで [ユーザー] をクリックします。
[ユーザー アカウントを追加] をクリックします。
次の表に示すプロパティを設定し、それ以外のプロパティはデフォルトのままにします。
| プロパティ | 値 |
|---|---|
| ユーザー名 | admin |
| パスワード | changeme! |
| ホスト名 | IP アドレスまたはアドレス範囲でホストを制限する |
| ホスト | localhost |
[追加] をクリックします。
ステップ 4~6 を繰り返して、localhost アクセス権を持つユーザーをさらに 2 人作成します。
| ユーザー | パスワード |
|---|---|
| bsmith | mustchangeasap! |
| mhill | update! |
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Google Cloud コンソールのタイトルバーにある [検索] フィールドに「データベースの移行」と入力し、検索結果から [データベースの移行] をクリックします。
左側のペインで [移行ジョブ] をクリックし**、[vm-to-cloudsql] 移行ジョブをクリックして詳細ページを表示します。
[開始] ボタンをクリックして移行ジョブを実行します。
確認を求めるメッセージが表示されたら、[開始] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Google Cloud コンソールのタイトルバーにある [検索] フィールドに「Cloud SQL」と入力し、検索結果から [Cloud SQL] をクリックします。
mysql-cloudsql というインスタンス ID をクリックします。
[プライマリ インスタンス] メニューで、[概要] をクリックします。
[このインスタンスとの接続] パネルまでスクロールし、[Cloud Shell を開く] をクリックします。
MySQL に接続するためのコマンドが Cloud Shell に事前入力されます。
プロンプトが表示されたら API について [承認] をクリックします。
これで、MySQL インタラクティブ コンソールが有効になりました。
前のタスクで作成したユーザーが表示されます。
| definer | security_type | table_schema | table_name |
|---|---|---|---|
| admin@localhost | DEFINER |
customers_data | customers_single |
| admin@localhost | DEFINER |
sales_data | invoices_storenum_5173 |
| bsmith@localhost | DEFINER |
customers_data | customers_married |
| bsmith@localhost | DEFINER |
sales_data | invoices_storenum_3980 |
| mhill@localhost | INVOKER |
sales_data | invoices_storenum_3656 |
このクエリは 27 行を返します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Database Migration Service ジョブの実行時に MySQL ユーザーデータを移行する方法について学習しました。
データ移行、Cloud SQL データベース、Database Migration Service の詳細については、以下をご覧ください。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 12 月 4 日
ラボの最終テスト日: 2025 年 12 月 10 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください