Always On 可用性グループのセカンダリ レプリカのバックアップの構成

適用対象: SQL Server (サポートされているすべてのバージョン)

このトピックでは、SQL Server Management Studio、Transact-SQL、または PowerShell を SQL Server で使用して、Always On 可用性グループのセカンダリ レプリカでバックアップを構成する方法について説明します。

注意

セカンダリ レプリカでのバックアップの概要については、「アクティブなセカンダリ: セカンダリ レプリカでのバックアップ (AlwaysOn 可用性グループ)」を参照してください。

前提条件

SSMS でプライマリ レプリカをホストするサーバー インスタンスに接続されている必要があります。 セカンダリ レプリカが正常であることが求められます。これには、現行のプライマリ レプリカに接続されていること、セカンダリ ロールに含まれていることなどが含まれます。

注意

バックアップをオフロードするためにセカンダリ レプリカを読み取り可能にする必要はありません。 Readable Secondaryno に設定されている場合でも、セカンダリ レプリカでバックアップは成功します。

アクセス許可

タスク アクセス許可
可用性グループの作成時にセカンダリ レプリカでバックアップを構成するには sysadmin 固定サーバー ロールのメンバーシップと、CREATE AVAILABILITY GROUP サーバー権限、ALTER ANY AVAILABILITY GROUP 権限、CONTROL SERVER 権限のいずれかが必要です。
可用性グループまたは可用性レプリカを変更するには 可用性グループの ALTER AVAILABILITY GROUP 権限、CONTROL AVAILABILITY GROUP 権限、ALTER ANY AVAILABILITY GROUP 権限、または CONTROL SERVER 権限が必要です。

SQL Server Management Studio を使用する

セカンダリ レプリカでバックアップを構成するには

  1. オブジェクト エクスプローラーで、プライマリ レプリカをホストするサーバー インスタンスに接続し、サーバー名をクリックしてサーバー ツリーを展開します。

  2. [AlwaysOn 高可用性] ノードと [可用性グループ] ノードを展開します。

  3. バックアップ優先設定を構成する可用性グループをクリックし、 [プロパティ] をクリックします。

  4. [可用性グループのプロパティ] ダイアログ ボックスで、 [バックアップの設定] ページをクリックします。

  5. [バックアップを実行する場所] パネルで、可用性グループの自動バックアップ設定を選択します。次のいずれかを選択できます。

    [セカンダリを優先]
    オンラインのレプリカがプライマリ レプリカのみである場合を除き、セカンダリ レプリカでバックアップを実行することを指定します。 オンラインのレプリカがプライマリ レプリカのみである場合は、プライマリ レプリカでバックアップを実行する必要があります。 既定のオプションです。

    [セカンダリのみ]
    バックアップをプライマリ レプリカでは実行しないことを指定します。 オンラインのレプリカがプライマリ レプリカだけの場合、バックアップは実行されません。

    プライマリ
    バックアップを常にプライマリ レプリカで実行することを指定します。 このオプションは、差分バックアップの作成など、バックアップがセカンダリ レプリカで実行されたときにはサポートされないバックアップ機能が必要な場合に役に立ちます。

    重要

    ログ配布を使用して可用性グループのセカンダリ データベースを準備する場合は、すべてのセカンダリ データベースの準備が完了し、それらを可用性グループに参加させるまで、自動バックアップ設定を [プライマリ] に設定します。

    [任意のレプリカ]
    バックアップを実行するレプリカを選択するときにバックアップ ジョブが可用性レプリカのロールを無視するように指定します。 バックアップ ジョブは、動作状態および接続状態と組み合わせて、各可用性レプリカのバックアップ優先順位などの他の要素を評価する場合があります。

    重要

    自動バックアップ設定の適用はありません。 この優先設定の解釈は、特定の可用性グループのデータベースに対するバックアップ ジョブのスクリプトでのロジックに依存します (ロジックが存在する場合)。 自動バックアップ設定はアドホック バックアップには影響しません。 詳細については、このトピックの「 補足情報: セカンダリ レプリカでバックアップを構成した後 」を参照してください。

  6. [レプリカのバックアップの優先順位] グリッドを使用して、可用性レプリカのバックアップの優先順位を変更します。 このグリッドには、可用性グループのレプリカをホストする各サーバー インスタンスの現在のバックアップの優先順位が表示されます。 グリッドの列は次のとおりです。

    サーバー インスタンス
    可用性レプリカをホストする SQL Server のインスタンスの名前。

    [バックアップ優先度 (最小 = 1、最高 = 100)]
    同じ可用性グループ内の他のレプリカと比較して、このレプリカでバックアップを実行する優先順位を指定します。 値は 0 ~ 100 の範囲の整数です。 1 は最も低い優先順位を示し、100 は最も高い優先順位を示します。 たとえば、 Backup Priority = 1 の場合、現在使用可能な可用性レプリカにそれより高い優先順位のものがない場合にのみ、その可用性レプリカがバックアップの実行に対して選択されます。

    [レプリカの除外]
    バックアップの実行時にこの可用性レプリカを選択しない場合に選択します。 これは、たとえば、バックアップをフェールオーバーすることがないリモート可用性レプリカのような場合に便利です。

  7. 変更をコミットするには、 [OK]をクリックします。

別の方法で [バックアップの設定] ページにアクセスする

Transact-SQL の使用

セカンダリ レプリカでバックアップを構成するには

  1. プライマリ レプリカをホストするサーバー インスタンスに接続します。

  2. 新しい可用性グループの場合は、CREATE AVAILABILITY GROUP (Transact-SQL) ステートメントを使用します。 既存の可用性グループを変更する場合は、ALTER AVAILABILITY GROUP (Transact-SQL) ステートメントを使用します。

PowerShell の使用

セカンダリ レプリカでバックアップを構成するには

  1. 既定 (cd) を、プライマリ レプリカをホストするサーバー インスタンスに設定します。

  2. 必要に応じて、追加または変更する各可用性レプリカのバックアップの優先順位を構成します。 この優先順位は、プライマリ レプリカをホストするサーバー インスタンスによって使用され、可用性グループ内のデータベースで自動バックアップ要求を処理するレプリカを決定します (優先順位の高いレプリカが選択されます)。 この優先順位には、0 ~ 100 の数値を指定できます。 優先順位が 0 の場合は、レプリカがバックアップ要求を処理する対象と見なされないことを示します。 既定の設定は 50 です。

    可用性グループに可用性レプリカを追加する場合は、 New-SqlAvailabilityReplica コマンドレットを使用します。 既存の可用性レプリカを変更する場合は、 Set-SqlAvailabilityReplica コマンドレットを使用します。 どちらの場合も BackupPriorityn パラメーターを使用します。 n は 0 ~ 100 の値です。

    たとえば、次のコマンドは、可用性レプリカ MyReplica のバックアップの優先順位を 60に設定します。

    Set-SqlAvailabilityReplica -BackupPriority 60 `  
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\AvailabilityReplicas\MyReplica  
    
  3. 必要に応じて、作成または変更している可用性グループの自動バックアップ設定を構成します。 この優先設定は、バックアップを実行する場所を選択するときにバックアップ ジョブがプライマリ レプリカを評価する方法を指定します。 既定の設定では、セカンダリ レプリカが優先されます。

    可用性グループを作成する場合は、 New-SqlAvailabilityGroup コマンドレットを使用します。 既存の可用性グループを変更する場合は、 Set-SqlAvailabilityGroup コマンドレットを使用します。 どちらの場合も AutomatedBackupPreference パラメーターを指定します。

    パラメーターの説明

    プライマリ
    バックアップを常にプライマリ レプリカで実行することを指定します。 このオプションは、差分バックアップの作成など、バックアップがセカンダリ レプリカで実行されたときにはサポートされないバックアップ機能が必要な場合に役に立ちます。

    重要

    ログ配布を使用して可用性グループのセカンダリ データベースを準備する場合は、すべてのセカンダリ データベースの準備が完了し、それらを可用性グループに参加させるまで、自動バックアップ設定を [プライマリ] に設定します。

    SecondaryOnly
    バックアップをプライマリ レプリカでは実行しないことを指定します。 オンラインのレプリカがプライマリ レプリカだけの場合、バックアップは実行されません。

    セカンダリ
    オンラインのレプリカがプライマリ レプリカのみである場合を除き、セカンダリ レプリカでバックアップを実行することを指定します。 オンラインのレプリカがプライマリ レプリカのみである場合は、プライマリ レプリカでバックアップを実行する必要があります。 これは既定の動作です。

    None
    バックアップを実行するレプリカを選択するときにバックアップ ジョブが可用性レプリカのロールを無視するように指定します。 バックアップ ジョブは、動作状態および接続状態と組み合わせて、各可用性レプリカのバックアップ優先順位などの他の要素を評価する場合があります。

    重要

    AutomatedBackupPreferenceは適用されません。 この優先設定の解釈は、特定の可用性グループのデータベースに対するバックアップ ジョブのスクリプトでのロジックに依存します (ロジックが存在する場合)。 自動バックアップ設定はアドホック バックアップには影響しません。 詳細については、このトピックの「 補足情報: セカンダリ レプリカでバックアップを構成した後 」を参照してください。

    たとえば、次のコマンドは、可用性グループ AutomatedBackupPreference MyAg プロパティを SecondaryOnlyに設定します。 この可用性グループ内のデータベースの自動バックアップはプライマリ レプリカでは行われませんが、バックアップの優先度設定が最も高いセカンダリ レプリカにリダイレクトされます。

    Set-SqlAvailabilityGroup `  
    -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg `  
    -AutomatedBackupPreference SecondaryOnly  
    

Note

コマンドレットの構文を表示するには、 PowerShell 環境で Get-Help SQL Server コマンドレットを使用します。 詳細については、「 Get Help SQL Server PowerShell」を参照してください。

SQL Server PowerShell プロバイダーを設定して使用するには

補足情報: セカンダリ レプリカでバックアップを構成した後

特定の可用性グループの自動バックアップ設定を考慮に入れるには、バックアップ優先度が 0 を超える (>0) 可用性レプリカをホストする各サーバー インスタンスで、可用性グループのデータベースのバックアップ ジョブを実行するスクリプトを作成する必要があります。 現在のレプリカが優先バックアップ レプリカかどうかを確認すには、バックアップ スクリプトで sys.fn_hadr_backup_is_preferred_replica 関数を使用します。 現在のサーバー インスタンスでホストされている可用性レプリカがバックアップ用の優先レプリカである場合、この関数は 1 を返します。 そうでない場合、関数は 0 を返します。 この関数に対してクエリを実行する各可用性レプリカを対象にしてシンプルなスクリプトを実行することによって、特定のバックアップ ジョブの実行に適したレプリカを特定できます。 たとえば、バックアップ ジョブ スクリプトの典型的なスニペットは次のようになります。

IF (sys.fn_hadr_backup_is_preferred_replica(@DBNAME) != 1)  
BEGIN  
      Select 'This is not the preferred replica, exiting with success';  
      RETURN 0 -- This is a normal, expected condition, so the script returns success  
END  
BACKUP DATABASE @DBNAME TO DISK = '<path to backup file>'  
   WITH COPY_ONLY;  

このロジックを使用してバックアップ ジョブのスクリプトを作成することにより、各可用性レプリカで同じスケジュールでジョブを実行できるようになります。 これらの各ジョブは同じデータを参照してジョブを実行する必要があるかどうかを判断するので、実際にバックアップ ステージに進むことができるのは、スケジュールされているジョブのうち 1 つだけです。 フェールオーバーが発生した場合に、どのスクリプトやジョブも変更する必要はありません。 また、可用性グループを再構成して可用性レプリカを追加する場合、バックアップ ジョブの管理で必要な操作は、バックアップ ジョブのコピーまたはスケジュールのみです。 可用性レプリカを削除する場合は、レプリカをホストするサーバー インスタンスからバックアップ ジョブを削除する操作のみです。

ヒント

メンテナンス プラン ウィザードを使用してバックアップ ジョブを作成すると、 sys.fn_hadr_backup_is_preferred_replica 関数の呼び出しと確認を行うスクリプト作成ロジックがそのジョブに自動的に含まれます。 ただし、バックアップ ジョブによって、"これは優先レプリカではありません" というメッセージが返されることはありません。可用性グループの可用性レプリカをホストする各サーバー インスタンスで、各可用性データベースのジョブを必ず作成します。

バックアップ優先設定に関する情報を取得するには

次の表は、セカンダリでのバックアップに関連する情報を取得するのに役立ちます。

表示 情報 関連する列
sys.fn_hadr_backup_is_preferred_replica 現在のレプリカが優先されるバックアップ レプリカであるかどうか 適用不可。
sys.availability_groups 自動バックアップ設定 automated_backup_preference

automated_backup_preference_desc
sys.availability_replicas 指定された可用性レプリカのバックアップの優先順位 backup_priority
sys.dm_hadr_availability_replica_states レプリカがこのサーバー インスタンスにローカルであるかどうか

現在のロール

操作状態

接続状態

可用性レプリカの同期の正常性
is_local

ロール, 、 role_desc

operational_stateoperational_state_desc

connected_stateconnected_state_desc

synchronization_healthsynchronization_health_desc

関連コンテンツ

参照

Always On 可用性グループの概要 (SQL Server)
アクティブなセカンダリ: セカンダリ レプリカでのバックアップ (AlwaysOn 可用性グループ)