分散可用性グループ(DAG)の移行について

Database Migration Service は、標準の Cloud Storage バックアップと復元の移行フローに加えて、 SQL Server 分散可用性グループ(DAG)を使用して、セルフマネージド SQL Server データベースを Cloud SQL for SQL Server に移行することをサポートしています。

Database Migration Service は、バックアップ ファイルとトランザクション ログファイルをエクスポートして Cloud Storage バケットにアップロードする代わりに、移行元の可用性グループと、移行先の Cloud SQL for SQL Server インスタンス上のマネージド セカンダリ可用性グループとの間に分散可用性グループを構成します。この構成では、最初のフルロードと継続的なデータベース変更の両方が、プライベート ネットワーク接続を介して直接ストリーミングされます。

このページでは、次のトピックについて説明します。

DAG 移行を使用するタイミング

次の表は、標準のバックアップと復元の移行と分散可用性グループ(DAG)の移行を比較したものです。ワークロードに最適なアプローチを選択する際に役立ちます。

機能または要件 標準のバックアップと復元の移行(標準移行ガイド) 分散可用性グループ(DAG)の移行(DAG 移行ガイド)
サポートされているソース セルフマネージド SQL Server、Amazon RDS、Cloud SQL for SQL Server。 Always On 可用性グループを使用するセルフマネージド SQL Server(Enterprise Edition)。
データ移動メカニズム Cloud Storage にステージングされたフル バックアップ(.bak)、オプションの差分バックアップ(.diff)、トランザクション ログ(.trn)の各ファイル。 SQL Server データベース ミラーリング(DBM)エンドポイントを介した直接ネットワーク ストリーミング(バックアップ ファイルや Cloud Storage バケットは不要)。
ネットワーク接続 移行元と移行先の間の接続は不要。 SQL Server データベース ポート(デフォルトは 1433)とデータベース ミラーリング ポート(デフォルトは 5022)で双方向のプライベート IP 接続が必要です。
移行中の移行先データベースへのアクセス データベースは、プロモートされるまで RESTORING モード(クエリにアクセスできない)のままになります。 継続的なレプリケーション(CDC)フェーズでは、データベースに読み取り専用モードでアクセスできます。
プロモーション後のフェイルバック サポートされていません(一方向のプロモーション)。 プロモート後に Cloud SQL for SQL Server からソース SQL Server インスタンスに組み込みのリバース レプリケーション(FAILBACK フェーズ)を行い、データ損失ゼロのフェイルバック スイッチオーバーをサポートします。

DAG 移行の仕組み

DAG 移行中、Database Migration Service は、移行元の可用性グループと、移行先の Cloud SQL for SQL Server インスタンス上のマネージド セカンダリ可用性グループ間のデータ レプリケーションをオーケストレートします。

ネットワーク通信チャネル

Database Migration Service は、移行元の SQL Server インスタンスと移行先の Cloud SQL for SQL Server インスタンスの間で、次の 2 つのプライベート ネットワーク通信チャネルを使用します。

  1. SQL Server リンクサーバー(データベース ポート、デフォルトは 1433): Database Migration Service は、移行先の Cloud SQL for SQL Server インスタンスで構成されたリンクサーバーを使用して、移行元の SQL Server インスタンスで管理クエリとオーケストレーション クエリを実行します。
  2. データベース ミラーリング(DBM)エンドポイント(デフォルトは 5022): 移行元の可用性グループと移行先の Cloud SQL for SQL Server 可用性グループは、証明書認証された初期フルロード データと継続的なデータベース変更を DBM ポート経由で直接交換します。

移行ライフサイクルのフェーズ

DAG 移行ジョブは、次の 4 つのライフサイクル フェーズを経て進行します。

  1. 初期フルロード(FULL_DUMP): 移行ジョブを開始すると、Database Migration Service は、分散可用性グループを構成して、ソース可用性グループ内のすべてのデータベースの初期フルコピーをネットワーク経由で宛先の Cloud SQL for SQL Server インスタンスにストリーミングします。
  2. 継続的なレプリケーション(CDC): 各データベースは、最初のフルロードが完了すると、CDC フェーズに移行します。ソース データベースに継続的に加えられた変更は、DBM エンドポイントを介して継続的に複製されます。移行先の Cloud SQL for SQL Server インスタンスに接続して、複製中のデータベースに対して読み取り専用の検証クエリを実行できます。
  3. プロモートとリバース レプリケーション(FAILBACK): 移行ジョブをプロモートすると(--failback フラグなしの promote)、Database Migration Service は両方の可用性グループを同期し、ロールを入れ替えて、移行先の Cloud SQL for SQL Server インスタンスが読み取り / 書き込みのプライマリになり、元のソース SQL Server インスタンスがセカンダリになります。また、移行ジョブのフェーズを FAILBACK(Google Cloud CLI と API レスポンスでは PHASE_FAILBACK)に移行します。FAILBACK フェーズでは、移行ジョブは Running 状態のままになり、Cloud SQL for SQL Server からソース SQL Server インスタンスに新しい書き込みを複製します。
  4. フェイルバックのスイッチオーバー、停止、完了(Stop と Delete):
    • FAILBACK フェーズ中にカットオーバーを元に戻す必要がある場合は、--failback フラグ(API では failback = true)を指定して promote コマンドを実行します。これにより、データ損失ゼロのフェイルバック スイッチオーバーが実行され、元のソース SQL Server インスタンスがプライマリとして復元され、Cloud SQL for SQL Server がセカンダリに降格され、移行ジョブが CDC フェーズに戻ります。
    • stop を実行すると、定義された短い期間、データ レプリケーションを停止できます(レプリケーションが停止している間も、トランザクション ログに更新が蓄積されます)。Stopped 状態から、resume を実行してデータ レプリケーションを再開するか、delete を実行して移行を完了し、必要なクリーンアップを実行できます。
    • Cloud SQL for SQL Server へのカットオーバーが永続的であることを確認したら、移行ジョブを削除(delete)します(直接または Stopped 状態から)。移行ジョブを削除すると、移行が完了し、両方のインスタンスの分散可用性グループと証明書が削除されます。また、ポイントインタイム リカバリ(PITR)やリードレプリカなど、移行中にブロックされる Cloud SQL for SQL Server の機能を有効にできます。

サポートされているソースと宛先のデータベース

DAG 移行では、次のソース データベースと宛先データベースのエディションとバージョンがサポートされています。

  • ソース データベース: Always On 可用性グループ機能が有効になっている(Windows または Linux 上の)セルフマネージド SQL Server Enterprise Edition(バージョン 2017、2019、2022、2025)。
  • 移行先データベース: Cloud SQL for SQL Server Enterprise Edition(バージョン 2017、2019、2022、2025)。

DAG 移行に関する既知の制限事項

DAG 移行を構成する前に、次の制限事項を考慮してください。

  • DAG 接続プロファイルの作成と、DAG 移行ジョブの作成、検証、開始、プロモート、削除は、Google Cloud CLI または Database Migration Service API を介してのみサポートされます。DAG 移行ジョブの進行状況、データベースごとのステータス、指標は、 Google Cloud コンソールでモニタリングできます。
  • 移行元の SQL Server インスタンスと移行先の Cloud SQL for SQL Server インスタンスの両方で Enterprise Edition を実行する必要があります。Amazon RDS と Cloud SQL for SQL Server のソースは、DAG 移行ではサポートされていません。
  • 各 DAG 移行ジョブは、1 つのソース可用性グループに含まれるすべてのデータベースを移行します(分散可用性グループごとに最大 100 個のデータベース)。システム データベース(master、model、msdb、tempdb)と Database Migration Service のヘルパー データベース(gcp_dms_db)は移行されません。
  • 移行元の可用性グループ内のすべてのデータベースは、データファイル(.mdf と .ndf)をデフォルトの SQL Server データ ディレクトリに保存する必要があります。
  • データベースの所有権の要件:
    • ソース データベースを sa ログインで所有することはできません。移行ジョブを開始する前に、データベースのオーナーを sa から別の SQL ログインまたは Windows ユーザーに変更します。
    • 移行元データベースが Windows Active Directory ユーザーによって所有されている場合は、移行前に移行元データベースの所有者を SQL ログインに変更するか、移行先の Cloud SQL for SQL Server インスタンスを Active Directory と統合して、移行ジョブの開始時に Database Migration Service が移行先インスタンスに対応する Windows ログインを自動的に作成できるようにする必要があります。
    • SQL 認証されたデータベース オーナーの場合、Database Migration Service は、移行されたデータベースを所有するために、gcp_dms_、6 文字の識別子、ソースオーナー名(gcp_dms_a1b2c3_myowner など)を接頭辞として、移行先の Cloud SQL for SQL Server インスタンスに対応するログインを自動的に作成します。
  • パブリック IP 接続はサポートされていません。プライベート サービス アクセスまたは Private Service Connect を使用して、移行元の SQL Server インスタンスと移行先の Cloud SQL for SQL Server インスタンス間のプライベート IP 接続を構成する必要があります。
  • DAG 移行ジョブが存在する間の移行先 Cloud SQL for SQL Server の制限: DAG 移行ジョブを開始した瞬間から移行ジョブを削除するまで(ジョブがプロモーション後の FAILBACK フェーズにある間を含む):
    • 移行先の Cloud SQL for SQL Server インスタンスでポイントインタイム リカバリ(PITR)を無効にする必要があります。
    • 宛先の Cloud SQL for SQL Server インスタンスでは、リードレプリカと読み取りプールはサポートされていません。
    • ダウンタイムがほぼゼロの計画的なメンテナンスは、移行先の Cloud SQL for SQL Server インスタンスではサポートされていません。
    • 移行先の Cloud SQL for SQL Server インスタンスで cloud sql enable dag support データベース フラグを手動で変更しないでください。Database Migration Service は、移行ジョブの開始時にこのフラグを自動的に有効にします。移行ジョブを削除した後に、このフラグを削除できます。
  • 移行中にデータベースを追加または削除する:
    • 移行ジョブが CDC フェーズにある間は、移行元の可用性グループでデータベースを動的に追加または削除できます。Database Migration Service は、新しく追加されたデータベースを自動的に検出して検証し、移行先の Cloud SQL for SQL Server インスタンスに最初のフルロードを実行します。
    • ソースの可用性グループからデータベースを削除すると、そのデータベースのレプリケーションが停止し、移行ジョブの追跡対象オブジェクトから削除されます。また、移行先の Cloud SQL for SQL Server インスタンスでデータベースが RESTORING 状態のままになります(ジョブがプロモートされても復元されません)。
    • プロモーション後の FAILBACK フェーズ中に、移行先の Cloud SQL for SQL Server インスタンスに新しいデータベースを直接追加することはできません(移行先の可用性グループは、Cloud SQL で作成された新しいデータベースで更新されません)。
  • DAG 移行ジョブの停止、再開、再起動に関する注意事項:
    • DAG 移行ジョブを停止(stop)すると、データ レプリケーションが停止し、レプリケーションが停止している間に更新がトランザクション ログに蓄積されます。トランザクション ログディスクがいっぱいにならないように、DAG 移行ジョブは定義された短い期間だけ停止します。Stopped 状態から、resume を実行してデータ レプリケーションを再開するか、delete を実行して移行を完了し、必要なクリーンアップを実行できます。
    • 失敗した、または停止した DAG 移行ジョブを再開(restart)すると、移行先の Cloud SQL for SQL Server インスタンスで移行されたデータベースが削除され、ネットワーク経由で初期フルロード(FULL_DUMP)が再実行されます。

次のステップ