このページでは、Database Migration Service を使用して Cloud SQL for SQL Server データベースを Cloud SQL for SQL Server インスタンスに移行する方法について説明します。この移行フローを使用すると、データベースを同じプロジェクトまたは別のプロジェクトの別の Cloud SQL for SQL Server に移行できます。 Google Cloud セルフマネージド ソースまたは Amazon RDS ソースから移行する方法については、 セルフホスト ソースと Amazon RDS ソースの移行ガイドをご覧ください。
Cloud SQL for SQL Server ソースの移行プロセスには、次のタスクが含まれます。
Database Migration Service がバックアップ ファイルを Cloud Storage バケットに自動的にエクスポートできるように、ソースの Cloud SQL for SQL Server インスタンスを構成する。
Google Cloud CLI を使用して移行元接続プロファイルを作成する。
移行先の Cloud SQL for SQL Server インスタンスを作成する。
Google Cloud CLI を使用して Database Migration Service で移行ジョブを作成し、実行します。
Database Migration Service のオブザーバビリティ機能を使用して移行ジョブの進行状況をモニタリングする。
データが完全に移行された後、移行ジョブをプロモートします。
費用
Cloud SQL への同種移行の場合、Database Migration Service は追加料金なしで提供されます。ただし、ネットワーク料金、および移行目的で作成された Cloud SQL と Cloud Storage のエンティティには、Cloud SQL と Cloud Storage の料金が適用されます。
このドキュメントでは、課金対象である次のGoogle Cloudコンポーネントを使用します。
- Cloud Storage
- Cloud SQL
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- この移行パスがシナリオを完全にサポートできるかどうかを確認します。SQL Server の既知の制限事項をご覧ください。
- 宛先データベースを作成するリージョンを検討します。Database Migration Service は完全にリージョンに依存するプロダクトです。つまり、移行に関連するすべてのエンティティ(移行元と移行先の接続プロファイル、移行ジョブ、移行先データベース、ストレージ バケット)を 1 つのリージョンに保存する必要があります。
- Google Cloud コンソールのプロジェクト セレクタ ページで、 Google Cloud プロジェクトを選択または 作成します。
- Database Migration Service、Compute Engine、Cloud Storage、Cloud SQL Admin API を有効にします。
必要なロール
Database Migration Service を使用して 2 つの Cloud SQL for SQL Server インスタンス間で同種移行を実行するために必要な権限を取得するには、関連するプロジェクトの 移行プロセスに関与するアカウントに必要な IAM ロールを付与するよう管理者に依頼してください。
このシナリオでは、異なる Google Cloud プロジェクトに存在する 2 つの Cloud SQL for SQL Server インスタンス間で移行できます。同じプロジェクト内のインスタンス間で移行する場合は、同じプロジェクト内のすべての権限を付与します。ロールの付与の詳細については、 アクセス権の管理をご覧ください。
ソース プロジェクトのロールと権限
移行元の Cloud SQL for SQL Server インスタンスが存在する Google Cloud プロジェクトの特定のアカウントに、次のロールを付与します。
- 移行を実行するユーザー アカウント:
-
ストレージ管理者(
roles/storage.admin) -
Cloud SQL 編集者(
roles/cloudsql.editor)
-
ストレージ管理者(
- 移行先インスタンス プロジェクトの Database Migration Service サービス アカウント:
-
Cloud SQL 閲覧者(
roles/cloudsql.viewer) -
Cloud SQL Studio ユーザー(
roles/cloudsql.studioUser)
-
Cloud SQL 閲覧者(
これらの事前定義ロールには、Database Migration Service を使用して同種の SQL Server 移行を実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限(ソース プロジェクト)」セクションを開いてご確認ください。
必要な権限(ソース プロジェクト)
Database Migration Service を使用して SQL Server の同種移行を行うには、次の権限が必要です。
- 移行を実行するユーザー アカウント:
resourcemanager.projects.getresourcemanager.projects.listcloudsql.operations.getcloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.instances.importcloudsql.databases.getcloudsql.databases.listcloudsql.databases.deletecompute.machineTypes.listcompute.machineTypes.getcompute.projects.getstorage.buckets.createstorage.buckets.list
- 宛先プロジェクトの Database Migration Service サービス アカウント:
cloudsql.instances.exportcloudsql.instances.getcloudsql.instances.listcloudsql.instances.executeSql
宛先プロジェクトのロールと権限
移行先の Cloud SQL for SQL Server インスタンスが存在する Google Cloud プロジェクトの特定のアカウントに、次のロールを付与します。
- 移行を実行するユーザー アカウント:
-
データベース移行管理者(
roles/datamigration.admin) -
ストレージ管理者(
roles/storage.admin) -
Cloud SQL 編集者(
roles/cloudsql.editor)
-
データベース移行管理者(
- 宛先インスタンス プロジェクトの Database Migration Service サービス アカウント:
-
データベース移行管理者(
roles/datamigration.admin) -
Cloud SQL 編集者(
roles/cloudsql.editor) -
Cloud SQL Studio ユーザー(
roles/cloudsql.studioUser)
-
データベース移行管理者(
- ソース インスタンスに関連付けられた Cloud SQL サービス アカウント:
Storage オブジェクト ユーザー(
roles/storage.objectUser)この権限は、ソースの Cloud SQL for SQL Server インスタンスが、エクスポートされたバックアップ ファイルを宛先プロジェクトに作成した Cloud Storage バケットに保存できるようにするために必要です。
これらの事前定義ロールには、Database Migration Service を使用して同種の SQL Server 移行を実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限(宛先プロジェクト)」セクションを開いてご確認ください。
必要な権限(宛先プロジェクト)
Database Migration Service を使用して SQL Server の同種移行を行うには、次の権限が必要です。
- 移行を実行するユーザー アカウント:
datamigration.*resourcemanager.projects.getresourcemanager.projects.listcloudsql.operations.getcloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.instances.importcloudsql.databases.getcloudsql.databases.listcloudsql.databases.deletecompute.machineTypes.listcompute.machineTypes.getcompute.projects.getstorage.buckets.createstorage.buckets.list
- Database Migration Service サービス アカウント:
datamigration.*resourcemanager.projects.getresourcemanager.projects.listcloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.instances.executeSqlstorage.objects.createstorage.objects.list
- ソース インスタンスに関連付けられた Cloud SQL サービス アカウント:
storage.objects.createstorage.objects.liststorage.objects.get
ソース Cloud SQL インスタンスを準備する
宛先のGoogle Cloud プロジェクトに Cloud Storage バケットを作成します。このバケットは、ソースの Cloud SQL for SQL Server インスタンスからエクスポートされたバックアップ ログファイルを保存するために使用されます。
- これらのバックアップ ファイルのデータ保持期間は、
14~30日に構成することをおすすめします。 - ソース インスタンスに関連付けられている Cloud SQL サービス アカウントには、このバケットにバックアップ ファイルを書き込むための
Storage オブジェクト ユーザー(
roles/storage.objectUser)IAM ロールが必要です。この移行フローの権限の詳細については、 必要なロールのセクションをご覧ください。
- これらのバックアップ ファイルのデータ保持期間は、
Cloud SQL for SQL Server ソース インスタンスの ソース接続プロファイルを作成します。
Cloud SQL for SQL Server の移行先インスタンスを準備する
移行先の Cloud SQL インスタンスを構成するには、次の手順を行います。
Cloud SQL for SQL Server の移行先インスタンスを作成して構成する。移行のニーズを満たすのに十分なコンピューティング リソースとメモリリソースを使用していることを確認します。
Cloud SQL インスタンスの 宛先接続プロファイルを作成します。
移行ジョブを作成して実行する
移行ジョブを開始すると、移行先の Cloud SQL for SQL Server データベースがリカバリモードになり、Database Migration Service によってフルマネージドになります。データが完全に移行されたら、移行先インスタンスをプロモートできます。移行先インスタンスがプロモートされると、そのインスタンス内のすべてのデータベースが完全に動作可能になります。また、これらのデータベースに対する完全な書き込みアクセス権も付与されます。
移行を完了する
アプリケーションを新しい Cloud SQL for SQL Server インスタンスに切り替える場合は、次の手順に沿って移行を完了します。
- ソース データベースに対するすべての書き込みオペレーションを停止します。読み取り専用モードに切り替えて、運用機能を維持できます。
- 移行ジョブをプロモートする。
- (省略可) 移行データの完全性を検証します。