次の方法で共有


リンクのフェールオーバー - Azure SQL Managed Instance

適用対象: Azure SQL Managed Instance

この記事では、SQL Server Management Studio (SSMS) または PowerShell を使用して SQL Server と Azure SQL Managed Instance 間でリンクされたデータベースをフェールオーバーする方法を説明します。

Note

  • 初期プライマリとして Azure SQL Managed Instance を構成することは現在プレビュー段階であり、SQL Server 2022 CU10 以降でのみサポートされています。

前提条件

リンクを通じてデータベースをセカンダリ レプリカにフェールオーバーするには、次の前提条件を満たす必要があります。

ワークロードを停止する

データベースをセカンダリ レプリカにフェールオーバーする準備ができたら、まず、メンテナンス時間中にプライマリ レプリカ上のアプリケーション ワークロードを停止します。 これにより、データベース レプリケーションがセカンダリに追いつくことができるため、データを失うことなくセカンダリにフェールオーバーできます。 フェールオーバーする前に、アプリケーションがプライマリにトランザクションをコミットしていないことを確認します。

データベースのフェールオーバー

SQL Server Management Studio または PowerShell を使用して、リンクされたデータベースをフェールオーバーできます。

SSMS の SQL Server とマネージド インスタンス間のフェールオーバー ウィザードを使用して、プライマリ レプリカからセカンダリ レプリカにデータベースをフェールオーバーします。

プライマリ レプリカまたはセカンダリ レプリカから計画フェールオーバーを実行できます。 強制フェールオーバーを実行するには、セカンダリ レプリカに接続します。

注意事項

  • フェールオーバーを行う前に、レプリケーションされたデータベースが完全に追いつき、フェールオーバーによるデータ損失を防ぐために、ソース データベース上のワークロードを停止します。 強制フェールオーバーを実行している場合は、データが失われる可能性があります。
  • SQL Server 2019 以前のバージョンのデータベースをフェールオーバーすると、2 つのレプリカ間のリンクが解除され、削除されます。 初期プライマリにフェールバックすることはできません。
  • SQL Server 2022 とのリンクを維持しつつ、データベースをフェールオーバーすることは現在プレビュー段階です。

データベースをフェールオーバーするには、次の手順に従います。

  1. SSMS を開き、いずれかのレプリカに接続します。

  2. オブジェクト エクスプローラーで、レプリケーションされたデータベースを右クリックし、Azure SQL Managed Instance のリンクにマウス ポインターを合わせ、[フェールオーバー…] を選択して、SQL Server と Managed Instance 間のフェールオーバー ウィザードを開きます。 同じデータベースから複数のリンクがある場合は、オブジェクト エクスプローラー[Always On 可用性グループ] の下にある [可用性グループ] を展開し、フェールオーバーするリンクの分散型可用性グループを右クリックします。 [フェールオーバー...] を選択すると、その特定のリンクに対する SQL Server と Managed Instance の間のフェールオーバー ウィザードが開きます。

    データベースのコンテキスト メニューのフェールオーバーのオプションを示すスクリーンショット。

  3. 概要ページで、次へを選択します。

  4. [フェールオーバーの種類の選択] ページには、各レプリカ、選択したデータベースのロール、サポートされているフェールオーバーの種類の詳細が表示されます。 任意のレプリカからフェールオーバーを開始できます。 強制フェールオーバーを選択した場合は、データ損失の可能性があることを受け入れるために、ボックスをチェックする必要があります。 [次へ] を選択します。

    Note

    Azure SQL Managed Instance に移行する場合は、[計画フェールオーバー] を選択します。

  5. [Azure とリモート インスタンスへの署名] ページで、次の操作を行います。

    1. [サインイン] を選択して資格情報を入力し、Azure アカウントにサインインします。
    2. 前のページで選択したフェールオーバーの種類に基づき、[サインイン] オプションの動作が変わります。 計画フェールオーバーでは、リモート インスタンス (SQL Server または SQL Managed Instance) へのサインインが必須です。 強制フェールオーバーでは、次の 2 つのシナリオがサポートされているため、署名は省略可能です。
      • 真のディザスター リカバリー: 通常、プライマリ インスタンスは実際の障害発生時に使用できないため、サインインすることはできません。ユーザーはすぐにセカンダリ インスタンスにフェールオーバーして、それを新しいプライマリ インスタンスにする必要があります。 障害が解決されると、両方のレプリカがプライマリ ロール (スプリットブレイン シナリオ) となるため、リンクは不整合な状態になります。
      • ディザスター リカバリー ドリル: データ損失の可能性があるため、強制フェールオーバーでディザスター リカバリー ドリルを実行することはお勧めしません。 ただし、ドリル時にはプライマリ インスタンスが使用可能であるため、サインインがサポートされ、スプリット ブレイン シナリオを回避するために両方のレプリカのロールを反転することができます。
  6. SQL Server 2022 以前のバージョンでは、[フェールオーバー後の操作] ページにおいて、オプションおよび、プライマリ インスタンスに接続できたかどうかの結果が異なります。

    • SQL Server 2022 では、レプリカ間のレプリケーションを停止すると、フェールオーバーの完了後にリンクと分散型可用性グループを削除することができます。 リンクを維持し、レプリカ間でデータのレプリケーションを続行する場合は、ボックスをオフチェックのままにします。 リンクを削除する場合は、データベースを Azure にレプリケーションするためだけに作成した可用性グループが不要になった場合は、このボックスをチェックして可用性グループを削除することもできます。 シナリオに合ったチェック ボックスをオンにし、[次へ] を選択します。
    • SQL Server 2019 以前のバージョンの場合、リンクを削除するオプションは既定でチェックされています。SQL Managed Instance にフェールオーバーするとレプリケーションが停止し、リンクが接続解除され、分散型可用性グループが削除されるため、リンクをチェック解除することはできません。 リンクが削除されることを理解したことを示すチェック ボックスをオンにし、[次へ] を選択します。
    • (省略可) 前のページで SQL Server インスタンスにサインインできた場合は、[クリーンアップ] セクションのチェック ボックスをオンにして、強制フェールオーバー後に SQL Server インスタンスの可用性グループを削除することもできます。
  7. [要約] ページでアクションを確認します。 必要に応じて、[スクリプト] を選択してスクリプトを生成し、後で同じリンクを使用してデータベースのフェールオーバーを行えるようにします。 データベースのフェールオーバーを行う準備ができたら、[完了] を選択します。

  8. すべての手順が完了すると、[結果] ページで、正常に完了したアクションの横にチェック マークが表示されます。 これで、ウィンドウを終了できます。

SQL Server 2022 のリンクを維持する場合、セカンダリは新しいプライマリになり、リンクはまだアクティブのままで、セカンダリにフェールバックできます。

SQL Server 2019 以前のバージョンを使用している場合、または SQL Server 2022 のリンクを削除することを選択した場合、リンクは削除され、フェールオーバーの完了後に存在しなくなります。 それぞれのレプリカ上のソース データベースとターゲット データベースは両方、読み取り/書き込みワークロードを実行できます。 これらは完全に独立しています。

重要

SQL Managed Instance へのフェールオーバーが成功した後、アプリケーションの接続文字列が SQL マネージド インスタンスの FQDN を指すように手動で設定し直し、移行またはフェールオーバー プロセスを完了して、Azure での実行を続けます。

フェールオーバー後のデータベースを確認する

SQL Server 2022 の場合、リンクを維持した場合は、SQL Server Management Studio のオブジェクト エクスプローラーAvailability Groups で分散可用性グループが存在することを確認できます。

フェールオーバー中にリンクを削除した場合は、オブジェクト エクスプローラーを使用すると分散型可用性グループがなくなったことを確認できます。 可用性グループを保持した場合、データベースは同期されたままとなります。

可用性グループをクリーン アップする

SQL Server 2022 でフェールオーバーしてもリンクは壊れないため、フェールオーバー後にリンクは維持され、可用性グループと分散型可用性グループは依然として有効です。 これ以外の操作は必要ありません。

ただし、リンクを削除すると、分散型可用性グループのみが削除され、可用性グループは依然としてアクティブになります。 可用性グループを保持するか、削除するかを決定できます。

可用性グループを削除する場合は、次の値を置き換えてからサンプルの T-SQL コードを実行します。

  • <AGName> は SQL Server の可用性グループの名前に (リンクの作成に使用される)。
-- Run on SQL Server
USE MASTER
GO
DROP AVAILABILITY GROUP <AGName> 
GO

リンク機能の詳細については、以下のリソースを確認してください。