可用性グループの計画的な手動フェールオーバーの実行 (SQL Server)
このトピックでは、SQL Server 2012 の SQL Server Management Studio、Transact-SQL、または PowerShell を使用して、AlwaysOn 可用性グループ上でデータを失わずに手動フェールオーバー (計画的な手動フェールオーバー) を実行する方法について説明します。 可用性グループは、可用性レプリカのレベルでフェールオーバーします。 AlwaysOn 可用性グループ フェールオーバーのような計画的な手動フェールオーバーでは、セカンダリ レプリカはプライマリ ロールに移行し、同時に、それまでのプライマリ レプリカはセカンダリ ロールに移行します。
計画的な手動フェールオーバーは、プライマリ レプリカおよびターゲット セカンダリ レプリカが同期コミット モードで動作していて、現在同期されている場合にのみサポートされます。この場合、ターゲット セカンダリ レプリカ上の可用性グループに参加しているセカンダリ データベース内のすべてのデータが維持されます。 元のプライマリ レプリカがセカンダリ ロールに移行すると、そのデータベースはセカンダリ データベースになり、新しいプライマリ データベースとの同期が開始されます。 すべてが SYNCHRONIZED 状態に移行した後は、新しいセカンダリ レプリカが、将来の計画的な手動フェールオーバーのターゲットとして機能できるようになります。
注 |
---|
セカンダリ レプリカとプライマリ レプリカの両方に対して自動フェールオーバー モードを構成し、セカンダリ レプリカを同期すると、自動フェールオーバーのターゲットとしても機能できるようになります。 詳細については、「可用性モード (AlwaysOn 可用性グループ)」を参照してください。 |
作業を開始する準備:
制限事項と制約事項
前提条件と制限
セキュリティ
可用性グループで手動フェールオーバーを行う方法:
SQL Server Management Studio
Transact-SQL
PowerShell
補足情報: 可用性グループの手動フェールオーバー後
作業を開始する準備
制限事項と制約事項
フェールオーバー コマンドは、ターゲットのセカンダリ レプリカがコマンドを受け入れた直後に戻ります。 ただし、データベースの復旧は、可用性グループがフェールオーバーを完了した後に非同期で行われます。
フェールオーバー時に、可用性グループ内のデータベース間の一貫性は維持されません。
注 複数のデータベースにまたがるトランザクションおよび分散トランザクションは、AlwaysOn 可用性グループ ではサポートされません。 詳細については、「データベース ミラーリングまたは AlwaysOn 可用性グループではサポートされない複数データベースにまたがるトランザクション (SQL Server)」を参照してください。
前提条件と制限
ターゲットのセカンダリ レプリカとプライマリ レプリカは、両方とも同期コミット可用性モードで実行されている必要があります。
ターゲットのセカンダリ レプリカは、現在プライマリ レプリカと同期されている必要があります。 このためには、この可用性レプリカのすべてのセカンダリ データベースが可用性グループに参加している必要があり、対応するプライマリ データベースに同期されている必要があります (つまり、ローカル セカンダリ データベースは SYNCHRONIZED 状態である必要があります)。
ヒント セカンダリ レプリカのフェールオーバーの準備状態を調べるには、sys.dm_hadr_database_cluster_states 動的管理ビューで is_failover_ready 列をクエリするか、AlwaysOn グループ ダッシュボードの [フェールオーバーの準備] 列を確認します。
このタスクは、ターゲット セカンダリ レプリカ上でのみサポートされます。 ターゲット セカンダリ レプリカをホストするサーバー インスタンスに接続されている必要があります。
セキュリティ
権限
可用性グループの ALTER AVAILABILITY GROUP 権限、CONTROL AVAILABILITY GROUP 権限、ALTER ANY AVAILABILITY GROUP 権限、または CONTROL SERVER 権限が必要です。
[先頭に戻る]
SQL Server Management Studio の使用
可用性グループで手動フェールオーバーを行うには
オブジェクト エクスプローラーで、フェールオーバーを行う可用性グループのセカンダリ レプリカをホストするサーバー インスタンスに接続し、サーバー ツリーを展開します。
[AlwaysOn 高可用性] ノードと [可用性グループ] ノードを展開します。
フェールオーバーする [可用性グループ] ノードを右クリックし、[フェールオーバー] を選択します。
可用性グループのフェールオーバー ウィザードが起動します。 詳細については、「可用性グループのフェールオーバー ウィザードの使用 (SQL Server Management Studio)」を参照してください。
[先頭に戻る]
Transact-SQL の使用
可用性グループで手動フェールオーバーを行うには
ターゲット セカンダリ レプリカをホストするサーバー インスタンスに接続します。
ALTER AVAILABILITY GROUP ステートメントを使用します。次にその例を示します。
ALTER AVAILABILITY GROUP group_name FAILOVER
group_name は、可用性グループの名前です。
次の例では、MyAg 可用性グループを接続されているセカンダリ レプリカに手動でフェールオーバーします。
ALTER AVAILABILITY GROUP MyAg FAILOVER;
[先頭に戻る]
PowerShell の使用
可用性グループで手動フェールオーバーを行うには
ディレクトリ変更コマンド (cd) を使用して、ターゲット セカンダリ レプリカをホストするサーバー インスタンスに移動します。
Switch-SqlAvailabilityGroup コマンドレットを使用します。
注 コマンドレットの構文を表示するには、SQL Server 2012 PowerShell 環境で Get-Help コマンドレットを使用します。 詳細については、「SQL Server PowerShell のヘルプの参照」を参照してください。
次の例では、MyAg 可用性グループを指定したパスのセカンダリ レプリカに手動でフェールオーバーします。
Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SecondaryServer\InstanceName\AvailabilityGroups\MyAg
SQL Server PowerShell プロバイダーを設定して使用するには
[先頭に戻る]
補足情報: 可用性グループの手動フェールオーバー後
可用性グループの自動フェールオーバー セットの外側でフェールオーバーした場合、WSFC ノードのクォーラム投票を調整して新しい可用性グループの構成を反映します。 詳細については、「Windows Server フェールオーバー クラスタリング (WSFC) と SQL Server」を参照してください。
[先頭に戻る]
関連項目
概念
AlwaysOn 可用性グループの概要 (SQL Server)