このページでは、Cloud SQL で直接作成された既存の Cloud SQL インスタンスにデータベースを移行する方法について説明します。
このパスは、移行先インスタンスが別のチームによって管理されている場合や、Database Migration Service の外部でインスタンスを作成する必要がある場合(Terraform を使用する場合など)に便利です。移行の要件が異なる場合は、別の移行フローを検討してください。詳細については、 MySQL の移行を始めるをご覧ください。
移行は、大まかに次の手順で行われます。
- Database Migration Service が新しいデータベースにデータを移動できるように、移行元データベースを構成します。
- 移行元の MySQL インスタンスへのネットワーク接続を設定します。
- 接続プロファイルと移行ジョブを作成します。
- 移行ジョブを開始してモニタリングします。
- 移行ジョブをプロモートし、新しいデータベースを使用するようにアプリケーションを移行します。
費用
このドキュメントでは、課金対象である次のGoogle Cloudコンポーネントを使用します。
- Cloud SQL( Cloud SQL の料金をご覧ください)。
- 顧客管理の暗号鍵(CMEK)の保存に使用される場合: Cloud Storage( Cloud Storage の料金を参照)。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- この移行パスでシナリオを完全にサポートできるかどうかを確認します。次のページをご覧ください。
- シナリオの概要ページの サポートされている移行元と移行先に、サポートされているすべての移行元と移行先のバージョンが一覧表示されます。
- 既知の制限事項では、サポートされているデータ型、データベース サイズ、その他の制限事項について説明します。
- 1 回限りの移行の場合: 移行のスケジュールを検討します。1 回限りの移行では、完全なダンプと読み込みオペレーションのみが実行され、その後の変更データ キャプチャは行われません。移行プロセスでデータが失われないように、移行元データベースへの書き込みを無効にすることをおすすめします。
- 宛先データベースを作成するリージョンを検討します。Database Migration Service は完全にリージョン プロダクトです。つまり、移行に関連するすべてのエンティティ(移行元と移行先の接続プロファイル、移行ジョブ、移行先データベース、変換ワークスペース)は、単一のリージョンに保存する必要があります。
- Google Cloud コンソールのプロジェクト セレクタ ページで、 Google Cloud プロジェクトを選択または 作成します。
- Database Migration Service API と Cloud SQL Admin API を有効にします。
必要なロール
Database Migration Service を使用して同種の MySQL 移行を実行するために必要な権限を取得するには、プロジェクトに対する必要な IAM ロールを付与するよう管理者に依頼してください。
-
データベース移行管理者(
roles/datamigration.admin) - Database Migration Service の外部で移行先インスタンスを作成する必要がある場合は、
Cloud SQL 管理者(
roles/cloudsql.admin)も必要です。
ロールの付与の詳細については、Identity and Access Management ドキュメントの アクセスを管理するをご覧ください。
これらの事前定義ロールには、Database Migration Service を使用して同種 MySQL 移行を実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
Database Migration Service で同種の MySQL 移行を行うには、次の権限が必要です。
datamigration.*cloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.instances.updatecloudsql.instances.deletecloudsql.operations.getcloudsql.users.listcloudsql.users.getcloudsql.users.createcloudsql.users.updatecloudsql.users.delete
カスタムロールや他の 事前定義ロールを使用して、これらの権限を取得することもできます。
ソース データベースを準備する
移行するソースデータを準備する手順は次のとおりです。
- 独自のダンプファイルを提供するか、Database Migration Service で完全なダンプを自動的に実行するかを検討します。
- 自動ダンプ(デフォルト): Database Migration Service は、移行ジョブの開始時に移行元データベースに接続し、スキーマとデータの初期ダンプを自動的に実行します。移行を開始する前に準備する必要はありません。
- 手動ダンプ: 独自のダンプファイルを生成して、Cloud Storage バケットにアップロードできます。このアプローチは、プライマリ インスタンスの初期負荷を軽減してレプリカから完全なダンプを取得する場合、特定のメンテナンスの時間枠にダンプを実行する場合、カスタム エクスポート フラグを渡す場合に役立ちます。
mysqldumpを使用して MySQL データベースをエクスポートするをご覧ください。
- 移行元ネットワークの接続方法を選択して構成する。
- ソース データベース インスタンスを構成します。
- 継続的な移行については、 継続的な移行のために移行元データベースを構成するをご覧ください。
- 1 回限りの移行については、 1 回限りの移行のために移行元データベースを構成するをご覧ください。
- ソース接続プロファイルを作成する。
移行先インスタンスを作成して構成する
シナリオによっては、使用可能な構成オプションをすべて活用するために、移行先インスタンスを Cloud SQL で直接事前に作成することがあります。
Cloud SQL で移行先を直接作成する場合は、移行先マシンのネットワーク タイプを慎重に検討してください。
- Private Service Connect インターフェース接続を使用する場合は、移行先インスタンスを PSC 対応インスタンスとして作成します。 PSC 対応インスタンスを作成するをご覧ください。
- Virtual Private Cloud ピアリング接続を使用する場合は、移行先インスタンスを PSA インスタンスとして作成します。 データベース インスタンスを作成するをご覧ください。
- パブリック IP 許可リスト接続を使用する場合は、パブリック IP が有効になっている移行先インスタンスを作成します。 データベース インスタンスを作成するをご覧ください。
既存の移行先 Cloud SQL インスタンスがすでにある場合は、次のセクションに進みます。
移行ジョブを作成して実行する
移行を構成して実行する手順は次のとおりです。
- 省略可: 移行ジョブの独自の証明書を管理する場合は、 必要な暗号鍵を準備します。
-
移行ジョブを作成して実行します。
Database Migration Service のオブザーバビリティ機能を使用すると、移行の進行状況と移行先インスタンスの健全性をモニタリングできます。 移行ジョブの指標をご覧ください。
移行を完了する
アプリケーションを新しい Cloud SQL for MySQL インスタンスに切り替える場合は、次の手順に沿って移行を完了します。
継続的な移行
- 省略可: リードレプリカのカスケードを設定します。カスケード リードレプリカを使用する場合は、移行ジョブが CDC フェーズに入ったときに構成できます。
- 移行元データベースに対するすべての書き込みオペレーションを停止します。読み取り専用モードに切り替えて、運用機能を維持できます。
- 移行ジョブをプロモートする。
- 省略可: 移行データの完全性を検証します。
1 回限りの移行
Database Migration Service が完全ダンプ フェーズを完了すると、移行先インスタンスは自動的にスタンドアロン インスタンスに昇格します。移行を完了するには、次の操作を行います。
- 省略可: 移行データの完全性を 検証する。
- 新しい Cloud SQL for MySQL インスタンスに接続するようにアプリケーションを切り替えます。
次のステップ
Cloud SQL for MySQL の Google Cloud 機能の詳細を確認する。 Cloud SQL for MySQL の機能をご覧ください。