SQL Server データベースを Cloud SQL for SQL Server に移行する

このページでは、Database Migration Service を使用して SQL Server データベースを Cloud SQL for SQL Server インスタンスに移行する方法について説明します。

移行プロセスには、次のタスクが含まれます。

  1. ソースの SQL Server インスタンスからデータベースのフル バックアップとトランザクション ログ ファイルをエクスポートする。

    移行プロセスでオプションの差分データベース バックアップを使用することもできます。

  2. バックアップ ファイルを Cloud Storage バケットにアップロードします。

  3. 移行先の Cloud SQL for SQL Server インスタンスの作成。

  4. Database Migration Service で移行ジョブを作成し、実行します。

  5. Database Migration Service のオブザーバビリティ機能を使用して移行ジョブの進行状況をモニタリングする。

  6. データが完全に移行された後、移行ジョブをプロモートします。

料金

Cloud SQL への同種移行の場合、Database Migration Service は追加料金なしで利用できます。ただし、ネットワーク料金と、移行目的で作成された Cloud SQL エンティティと Cloud Storage エンティティには、Cloud SQL と Cloud Storage の料金が適用されます。

このドキュメントでは、Google Cloudの次の課金対象コンポーネントを使用します。

  • Cloud Storage
  • Cloud SQL

料金計算ツールを使用すると、予想使用量に基づいて費用の見積もりを生成できます。

始める前に

  1. この移行パスがシナリオを完全にサポートできるかどうかを確認します。SQL Server の既知の制限事項をご覧ください。
  2. 宛先データベースを作成するリージョンを検討します。Database Migration Service は完全にリージョン ベースのサービスです。つまり、移行に関連するすべてのエンティティ(移行元と移行先の接続プロファイル、移行ジョブ、移行先データベース、ストレージ バケット)を 1 つのリージョンに保存する必要があります。
  3. Google Cloud コンソールの [プロジェクト セレクタ] ページで、 Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  4. Database Migration Service、Compute Engine、Cloud Storage、Cloud SQL Admin API を有効にします。

    API を有効にする

必要なロール

Database Migration Service で同種の SQL Server 移行を実行するために必要な権限を取得するには、次の 移行プロセスに関連するアカウントに対して、プロジェクトに必要な IAM ロールを付与するよう管理者に依頼します。

ロールの付与の詳細については、 アクセスの管理をご覧ください。

これらの事前定義ロールには、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

カスタムロールや他の 事前定義ロールを使用して、これらの権限を取得することもできます。

移行元データの準備

移行するソースデータを準備する手順は次のとおりです。

  1. 移行プロセスのバックアップ戦略を検討する。Database Migration Service は、差分バックアップとトランザクション ログ ファイルを使用して、フル バックアップの取得後にデータベースに表示されるデータを移行できます。

  2. ソース SQL Server データベースのフル バックアップを実行します。正しい命名パターンを使用していることを確認してください。

  3. Cloud Storage バケットを準備して、バックアップ ファイルをアップロードします。使用するバックアップ ファイルの種類ごとに必要なディレクトリ構造を設定してください。

  4. Cloud Storage バケットの ソース接続プロファイルを作成します。

Cloud SQL for SQL Server の移行先インスタンスを準備する

移行先の Cloud SQL インスタンスを構成するには、次の操作を行います。

  1. Cloud SQL for SQL Server の移行先インスタンスを作成して構成します。移行のニーズを満たすのに十分なコンピューティング リソースとメモリ リソースを使用し、インスタンスのサービス アカウントにストレージ管理者(roles/storage.admin)ロールを割り当てます。

  2. Cloud SQL インスタンスのデスティネーション接続プロファイルを作成します。

移行ジョブを作成して実行する

移行を構成して実行する手順は次のとおりです。

  1. 移行ジョブを作成して実行します

    移行ジョブを開始すると、移行先の Cloud SQL for SQL Server データベースは復元モードになり、Database Migration Service によって完全に管理されます。データが完全に移行されたら、移行先インスタンスを昇格できます。移行先インスタンスが昇格すると、そのインスタンス内のすべてのデータベースが完全に動作するようになります。また、これらのデータベースへの完全な書き込みアクセス権も付与されます。

    Database Migration Service のオブザーバビリティ機能を使用して、移行の進行状況と移行先インスタンスの状態をモニタリングできます。 移行ジョブの指標をご覧ください。

  2. 新しいトランザクション ログ バックアップ ファイルを Cloud Storage バケットにアップロードし続けます。

    フル バックアップのエクスポート後にソース データベースに表示されるデータをカバーするには、 トランザクション ログ バックアップ ファイルをエクスポートして、ストレージ バケットにアップロードします。Database Migration Service は、新しいファイルを自動的に検出し、その内容を読み取って、移行先インスタンスにデータを push します。 トランザクション ログのエクスポートを自動化するをご覧ください。

移行を完了する

アプリケーションを新しい Cloud SQL for SQL Server インスタンスに切り替える場合は、次の手順で移行を完了します。

  1. 移行元データベースのすべての書き込みオペレーションを停止します。読み取り専用モードに切り替えて、運用機能を維持できます。
  2. 最後のトランザクション ログ バックアップを取得し、ファイルをストレージ バケットにアップロードして、Database Migration Service の増分読み込みフェーズを停止します。この結果を実現するには、次のいずれかの操作を行います。
  3. 移行ジョブをプロモートします
  4. (省略可) 移行データの完全性を確認します。