このページでは、Database Migration Service を使用して SQL Server データベースを Cloud SQL for SQL Server インスタンスに移行する方法について説明します。
移行プロセスには、次のタスクが含まれます。
- ソースの SQL Server インスタンスからデータベースの完全バックアップとトランザクション ログ ファイルをエクスポートする。 - 移行プロセスでオプションの差分データベース バックアップを使用することもできます。 
- バックアップ ファイルを Cloud Storage バケットにアップロードします。 
- 移行先の Cloud SQL for SQL Server インスタンスの作成。 
- 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 は完全にリージョン ベースのサービスです。つまり、移行に関連するすべてのエンティティ(移行元と移行先の接続プロファイル、移行ジョブ、移行先データベース、ストレージ バケット)を単一のリージョンに保存する必要があります。
- Google Cloud コンソールのプロジェクト セレクタ ページで、 Google Cloud プロジェクトを選択または 作成します。
- Database Migration Service、Compute Engine、Cloud Storage、Cloud SQL Admin API を有効にします。
必要なロール
Database Migration Service で同種の SQL Server 移行を実行するために必要な権限を取得するには、次の 移行プロセスに関連するアカウントに対して、プロジェクトに対する必要な IAM ロールを付与するよう管理者に依頼します。
- 移行を実行するユーザー アカウント:
    -  
      データベース移行管理者(roles/datamigration.admin)
- 
      ストレージ管理者(roles/storage.admin)
- 
      Cloud SQL 編集者(roles/cloudsql.editor)
 
-  
      データベース移行管理者(
- Database Migration Service サービス アカウント:
    -  
      データベース移行管理者(roles/datamigration.admin)
- 
      ストレージ管理者(roles/storage.admin)
- 
      Cloud SQL 編集者(roles/cloudsql.editor)
- 
      Cloud SQL Studio ユーザー(roles/cloudsql.studioUser)
 
-  
      データベース移行管理者(
ロールの付与の詳細については、 アクセスの管理をご覧ください。
これらの事前定義ロールには、Database Migration Service で同種の SQL Server 移行を実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
Database Migration Service で同種の SQL Server 移行を実行するには、次の権限が必要です。
- 移行を実行するユーザー アカウント:
      - datamigration.*
- resourcemanager.projects.get
- resourcemanager.projects.list
- cloudsql.operations.get
- cloudsql.instances.create
- cloudsql.instances.get
- cloudsql.instances.list
- cloudsql.instances.import
- cloudsql.databases.get
- cloudsql.databases.list
- cloudsql.databases.delete
- compute.machineTypes.list
- compute.machineTypes.get
- compute.projects.get
- storage.buckets.create
- storage.buckets.list
 
- Database Migration Service サービス アカウント:
      - datamigration.*
- resourcemanager.projects.get
- resourcemanager.projects.list
- cloudsql.instances.create
- cloudsql.instances.get
- cloudsql.instances.list
- cloudsql.instances.executeSql
- storage.objects.create
- storage.objects.list
 
カスタムロールや他の 事前定義ロールを使用して、これらの権限を取得することもできます。
移行元データの準備
移行するソースデータを準備する手順は次のとおりです。
- 移行プロセスのバックアップ戦略を検討する。Database Migration Service は、差分バックアップとトランザクション ログ ファイルを使用して、フル バックアップの取得後にデータベースに表示されるデータを移行することをサポートしています。 
- ソース SQL Server データベースのフル バックアップを実行します。正しい命名パターンを使用していることを確認してください。 
- Cloud Storage バケットを準備して、バックアップ ファイルをアップロードします。使用するバックアップ ファイルの種類ごとに必要なディレクトリ構造を設定してください。 
- Cloud Storage バケットの ソース接続プロファイルを作成します。 
Cloud SQL for SQL Server の移行先インスタンスを準備する
移行先の Cloud SQL インスタンスを構成するには、次の操作を行います。
- Cloud SQL for SQL Server の移行先インスタンスを作成して構成します。移行のニーズを満たすのに十分なコンピューティング リソースとメモリ リソースを使用し、インスタンスのサービス アカウントにストレージ管理者( - roles/storage.admin)ロールを割り当てます。
- Cloud SQL インスタンスのデスティネーション接続プロファイルを作成します。 
移行ジョブを作成して実行する
移行を構成して実行する手順は次のとおりです。
- 
移行ジョブを開始すると、移行先の Cloud SQL for SQL Server データベースは復元モードになり、Database Migration Service によって完全に管理されます。データが完全に移行されたら、宛先インスタンスを昇格できます。移行先インスタンスが昇格すると、そのインスタンス内のすべてのデータベースが完全に動作するようになります。また、これらのデータベースへの完全な書き込みアクセス権も付与されます。 Database Migration Service のオブザーバビリティ機能を使用して、移行の進行状況と移行先インスタンスの状態をモニタリングできます。 移行ジョブの指標をご覧ください。 
- 新しいトランザクション ログ バックアップ ファイルを Cloud Storage バケットに継続的にアップロードします。 - フル バックアップのエクスポート後にソース データベースに表示されるデータをカバーするには、 トランザクション ログ バックアップ ファイルをエクスポートして、ストレージ バケットにアップロードします。Database Migration Service は、新しいファイルを自動的に検出し、その内容を読み取って、移行先インスタンスにデータを push します。 トランザクション ログのエクスポートを自動化するをご覧ください。 
移行を完了する
アプリケーションを新しい Cloud SQL for SQL Server インスタンスに切り替える場合は、次の手順で移行を完了します。
- 移行元データベースのすべての書き込みオペレーションを停止します。読み取り専用モードに切り替えて、運用機能を維持できます。
- 最後のトランザクション ログ バックアップを取得し、ファイルをストレージ バケットにアップロードし、Database Migration Service で増分読み込みフェーズを停止します。次のいずれかの方法でこの結果を実現できます。
    - 自動バックアップ ファイルのアップロードを停止するか、最後のトランザクション ログ ファイルをアップロードします。 未処理のトランザクション ログ バックアップのサイズをモニタリングして、Database Migration Service がそのファイルの処理を完了したタイミングを特定します。
- 必要に応じて、名前が .trn.final接尾辞で終わるトランザクション ログファイルをアップロードできます。Database Migration Service は、名前が.trn.final接尾辞の規則に一致するバックアップ ファイルを検出すると、継続的な読み込みを停止します。Database Migration Service がそのファイルの処理を完了すると、移行ジョブのステータスは Ready to promote に変わります。 
 
- 移行ジョブをプロモートします。
- (省略可) 移行データの完全性を確認します。