可用性データベースの中断 (SQL Server)
SQL Server 2012 で SQL Server Management Studio、Transact-SQL、または PowerShell を使用して、AlwaysOn 可用性グループ の可用性データベースを中断できます。 中断コマンドは、中断または再開するデータベースをホストするサーバー インスタンス上で実行する必要があります。
中断コマンドの効果は、次のように、中断するのがセカンダリ データベースかプライマリ データベースかによって異なります。
中断されたデータベース |
中断コマンドの影響 |
||
---|---|---|---|
[セカンダリ データベース] |
ローカルのセカンダリ データベースのみが中断され、同期の状態は NOT SYNCHRONIZING になります。 他のセカンダリ データベースは影響を受けません。 中断されたデータベースはデータ (ログ レコード) を受信および適用しなくなり、プライマリ データベースと同期されなくなります。 読み取り可能なセカンダリ上の既存の接続は、引き続き使用できます。 読み取り可能なセカンダリ上で中断されたデータベースに対する新しい接続は、データ移動が再開されるまでは許可されません。 プライマリ データベースは使用可能です。 対応する各セカンダリ データベースを中断した場合、プライマリ データベースは公開された状態で実行されます。
|
||
プライマリ データベース |
プライマリ データベースは、接続されているすべてのセカンダリ データベースへのデータ移動を停止します。 プライマリ データベースは、公開モードで実行を継続します。 クライアントはプライマリ データベースを使用でき、読み取り可能なセカンダリ上の既存の接続は引き続き使用でき、新しい接続も確立できます。 |
注 |
---|
AlwaysOn セカンダリ データベースの中断が、プライマリ データベースの可用性に直接影響することはありません。 ただし、セカンダリ データベースを中断すると、プライマリ データベースの冗長性とフェールオーバー機能に影響する場合があります。 ミラーリングの場合はこれと異なり、ミラーリングの状態はミラー データベースでもプリンシパル データベースでも中断になります。 AlwaysOn プライマリ データベースを中断すると、対応するすべてのセカンダリ データベースでデータ移動が中断され、そのデータベースの冗長性とフェールオーバー機能はプライマリ データベースが再開されるまで停止されます。 |
作業を開始する準備:
制限事項と制約事項
前提条件
推奨事項
セキュリティ
データベースを中断するために使用するもの:
SQL Server Management Studio
Transact-SQL
PowerShell
補足情報: トランザクション ログがいっぱいになった状態の回避
関連タスク
作業を開始する準備
制限事項と制約事項
SUSPEND コマンドは、対象のデータベースをホストするレプリカがコマンドを受け入れた直後に戻りますが、実際にはデータベースの中断が非同期に行われます。
前提条件
中断するデータベースをホストするサーバー インスタンスに接続している必要があります。 プライマリ データベースとそれに対応するセカンダリ データベースを中断するには、プライマリ レプリカをホストするサーバー インスタンスに接続します。 プライマリ データベースを使用可能な状態で維持したままセカンダリ データベースを中断するには、セカンダリ レプリカに接続します。
推奨事項
ボトルネックの発生中、1 つ以上のセカンダリ データベースを短時間中断すると、プライマリ レプリカのパフォーマンスが一時的に高まる効果が見込めます。 セカンダリ データベースが中断している間、対応するプライマリ データベースのトランザクション ログを切り捨てることはできません。 これにより、プライマリ データベースでログ レコードが蓄積されます。 そのため、中断したセカンダリ データベースをすぐに再開または削除することをお勧めします。 詳細については、このトピックの「補足情報: トランザクション ログがいっぱいになった状態の回避」を参照してください。
セキュリティ
権限
データベースに対する ALTER 権限が必要です。
可用性グループの ALTER AVAILABILITY GROUP 権限、CONTROL AVAILABILITY GROUP 権限、ALTER ANY AVAILABILITY GROUP 権限、または CONTROL SERVER 権限が必要です。
[先頭に戻る]
SQL Server Management Studio の使用
データベースを中断するには
オブジェクト エクスプローラーで、データベースを中断する可用性レプリカをホストするサーバー インスタンスに接続し、サーバー ツリーを展開します。 詳細については、このトピックの「前提条件」を参照してください。
[AlwaysOn 高可用性] ノードと [可用性グループ] ノードを展開します。
可用性グループを展開します。
[可用性データベース] ノードを展開し、データベースを右クリックして、[データ移動の中断] をクリックします。
[データ移動の中断] ダイアログ ボックスで、[OK] をクリックします。
オブジェクト エクスプローラーで、データベース アイコンに中断インジケーターが表示され、データベースが中断されていることが示されます。
注 |
---|
このレプリカの場所で他のデータベースを中断するには、データベースごとに手順 4. と手順 5. を繰り返します。 |
[先頭に戻る]
Transact-SQL の使用
データベースを中断するには
中断するデータベースのレプリカをホストするサーバー インスタンスに接続します。 詳細については、このトピックの「前提条件」を参照してください。
次の ALTER DATABASE ステートメントを使用して、データベースを中断します。
ALTER DATABASE database_name SET HADR SUSPEND
[先頭に戻る]
PowerShell の使用
データベースを中断するには
ディレクトリ (cd) を、中断するデータベースのレプリカをホストするサーバー インスタンスに変更します。 詳細については、このトピックの「前提条件」を参照してください。
Suspend-SqlAvailabilityDatabase コマンドレットを使用して可用性グループを中断します。
たとえば、次のコマンドでは、Computer\Instance という名前のサーバー インスタンス上の可用性グループ MyAg に含まれている可用性データベース MyDb3 のデータの同期を中断します。
Suspend-SqlAvailabilityDatabase ` -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\Databases\MyDb3
注 コマンドレットの構文を表示するには、SQL Server PowerShell 環境で Get-Help コマンドレットを使用します。 詳細については、「SQL Server PowerShell のヘルプの参照」を参照してください。
SQL Server PowerShell プロバイダーを設定して使用するには
[先頭に戻る]
補足情報: トランザクション ログがいっぱいになった状態の回避
通常、データベースで自動チェックポイントが実行されている場合は、次のログ バックアップの後、そのチェックポイントまでトランザクション ログが切り捨てられます。 ただし、セカンダリ データベースを中断している間、現在のすべてのログ レコードは、プライマリ データベースでアクティブのままになります。 最大サイズに到達したか、サーバー インスタンスの領域が不足して、トランザクション ログがいっぱいになると、データベースではそれ以上の更新を実行できません。
この問題を回避するには、次のいずれかの操作を実行する必要があります。
プライマリ データベースのログ領域を追加します。
ログがいっぱいになる前に、セカンダリ データベースを再開します。 詳細については、「可用性データベースの再開 (SQL Server)」を参照してください。
セカンダリ データベースを削除します。 詳細については、「可用性グループからのセカンダリ データベースの削除 (SQL Server)」を参照してください。
満杯になったトランザクション ログのトラブルシューティング
[先頭に戻る]