次の方法で共有


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

適用対象:Azure SQL Managed Instance

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

前提条件

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

ワークロードを停止する

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

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

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

リンクをフェールオーバーするには、SQL Server 2022 CU13 (KB5036432) 以降の Transact-SQL を使用します。

リンクの計画フェールオーバーを行うには、プライマリ レプリカで次の T-SQL コマンドを使用します。

ALTER AVAILABILITY GROUP [<DAGname>] FAILOVER

強制フェールオーバーを行うには、セカンダリ レプリカで次の T-SQL コマンドを使用します。

ALTER AVAILABILITY GROUP [<DAGname>] FORCE_FAILOVER_ALLOW_DATA_LOSS

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

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

強制フェールオーバー後の一貫性のない状態

強制フェールオーバー後、両方のレプリカがプライマリ ロールに存在するスプリット ブレイン シナリオが発生し、リンクが不整合な状態のままになる場合があります。 これは、障害発生時にセカンダリ レプリカにフェールオーバーした後、プライマリ レプリカがオンラインに戻った場合に発生する可能性があります。

この問題を解決するには、「スプリット ブレイン シナリオのを修正する」を参照してください。

リンクの使用については、以下を参照してください。

リンクの詳細については、以下を参照してください。

他のレプリケーション シナリオについては、以下を検討してください。