次の方法で共有


可用性グループ用の Azure への SQL Server マネージド バックアップの設定

このトピックは、AlwaysOn 可用性グループに参加しているデータベースに対して Microsoft Azure への SQL Server マネージド バックアップを構成する方法に関するチュートリアルです。

可用性グループの構成

可用性グループ データベースに対する SQL Server マネージド バックアップは、レプリカがすべてオンプレミスで構成されているか、完全に Azure で構成されているか、オンプレミスと 1 つ以上の Azure 仮想マシンの間のハイブリッド実装であるかに関係なく、サポートされています。 ただし、1 つ以上の実装では、次の点を考慮する必要がある場合があります。

  • ログ バックアップの頻度: ログ バックアップの頻度は、時間とログの増加の両方です。 たとえば、2 時間以内に使用されるログ領域が 5 MB 以上でない限り、ログ バックアップは 2 時間に 1 回実行されます。 これは、すべての実装、オンプレミス、クラウド、またはハイブリッドに適用されます。

  • ネットワーク帯域幅: これは、ハイブリッド クラウドなど、異なる物理的な場所にレプリカが配置されている実装、またはクラウドのみの構成内の異なる Azure リージョンにまたがる実装に適用されます。 ネットワーク帯域幅はセカンダリの待機時間に影響を与える可能性があり、セカンダリが同期レプリケーションに設定されている場合は、プライマリでログの増加が発生する可能性があります。 セカンダリが同期レプリケーションに設定されている場合、セカンダリがネットワーク待機時間のために維持できない可能性があり、セカンダリ レプリカへのフェールオーバーが発生した場合にデータが失われる可能性があります。

可用性データベース用の Microsoft Azure への SQL Server マネージド バックアップの構成。

アクセス許可:

  • db_backupoperator データベース ロールのメンバーシップが必要であり、ALTER ANY CREDENTIAL の権限と、EXECUTE ストアド プロシージャに対する権限が必要です。

  • smart_admin.fn_get_current_xevent_settings関数に対する SELECT 権限が必要です。

  • EXECUTE ストアド プロシージャに対するアクセス許可が必要です。 さらに、このアクセス許可を必要とする他のシステム オブジェクトを内部的に呼び出すので、 VIEW SERVER STATE アクセス許可が必要です。

  • EXECUTEおよびsmart_admin.sp_set_instance_backup ストアド プロシージャに対するsmart_admin.sp_backup_master_switchアクセス許可が必要です。

Microsoft Azure への SQL Server マネージド バックアップを使用して AlwaysOn 可用性グループを設定する基本的な手順を次に示します。 詳細なステップ バイ ステップ チュートリアルについては、このトピックの後半で説明します。

  1. 可用性グループを作成したら、優先バックアップ レプリカを構成します。 可用性グループのこの設定は、Microsoft Azure への SQL Server マネージド バックアップによっても使用され、バックアップに使用するレプリカを決定します。 バックアップ設定を設定する手順については、「 可用性レプリカでのバックアップの構成 (SQL Server)」を参照してください。 新しい AlwaysOn 可用性グループを作成する場合は、「 AlwaysOn 可用性グループの概要 (SQL Server)」を参照してください。

  2. セカンダリ レプリカへの読み取り専用接続アクセスを構成します。 読み取り専用アクセスを構成する手順については、「可用性レプリカでの Read-Only アクセスの構成 (SQL Server)」を参照してください。

  3. バックアップ レプリカを指定します。 バックアップ レプリカの推奨設定は、SQL Server Managed Backup を使用して Microsoft Azure へのバックアップのスケジュールを決定するために、どのデータベースを利用するかを判断します。 現在のレプリカが優先バックアップ レプリカであるかどうかを確認するには、 sys.fn_hadr_backup_is_preferred_replica (Transact-SQL) 関数を使用します。

  4. 各レプリカで、 スマート admin.sp_set_db_backup ストアド プロシージャを使用して、データベースの SQL Server Managed Backup to Microsoft Azure 構成を実行します。

    フェールオーバー後の Microsoft Azure への SQL Server マネージド バックアップの動作: Microsoft Azure への SQL Server マネージド バックアップは、フェールオーバー イベント後も引き続き動作し、バックアップ コピーと回復可能性を維持します。 フェールオーバー後に特定のアクションは必要ありません。

考慮事項と要件:

AlwaysOn 可用性グループに参加しているデータベースに対して Microsoft Azure への SQL Server マネージド バックアップを構成するには、特定の考慮事項と要件が必要です。 考慮事項と要件の一覧を次に示します。

  • Microsoft Azure への SQL Server マネージド バックアップの構成設定は、同じ可用性グループに参加している SQL Server のすべてのノード上のすべてのデータベースで同じである必要があります。 これを実現するには、データベース レベルでプライマリレプリカとすべてのレプリカに対して同じ SQL Server Managed Backup を Microsoft Azure 構成に設定するか、可用性グループに参加しているすべてのノードで同じ既定の SQL Server マネージド バックアップを Microsoft Azure 設定に設定します。 データベース レベルで SQL Server Managed Backup を Microsoft Azure に構成すると、データベースに設定を分離でき、既定の設定への変更はインスタンス上の他のすべてのデータベースに影響するため、データベースで SQL Server Managed Backup を Microsoft Azure に設定することをお勧めします。

  • バックアップ レプリカを指定します。 推奨されるバックアップ レプリカ設定は、バックアップをスケジュールするために、Microsoft Azure への SQL Server マネージド バックアップによって使用されます。 現在のレプリカが優先バックアップ レプリカであるかどうかを確認するには、 sys.fn_hadr_backup_is_preferred_replica (Transact-SQL) 関数を使用します。

  • セカンダリ レプリカが優先レプリカとして構成されている場合は、少なくとも読み取り専用の接続アクセス権を持つように構成する必要があります。 セカンダリ データベースへの接続アクセス権を持たない可用性グループはサポートされていません。 詳細については、可用性レプリカへの読み取り専用アクセスの構成 (SQL Server) に関するページを参照してください。

  • 可用性グループを構成した後で Microsoft Azure に SQL Server Managed Backup を構成する場合、SQL Server Managed Backup to Microsoft Azure は、既存のバックアップをベースにコピーし、ストレージ コンテナーにコピーしようとします。 Microsoft Azure への SQL Server マネージド バックアップで既存のバックアップが見つからない場合、または既存のバックアップにアクセスできない場合は、データベースの完全バックアップがスケジュールされます。 これは、可用性グループ データベースのバックアップ操作を最適化するために特別に行われます。

  • 新しい可用性データベースを作成していて、インスタンス レベルの設定をデータベースに適用しない場合は、インスタンス レベルの設定を無効にすることを検討してください。

  • 暗号化を使用する場合は、すべてのレプリカで同じ証明書を使用します。 これにより、フェールオーバーまたは別のレプリカへの復元が発生した場合に、継続的かつ中断されないバックアップ操作が容易になります。

可用性データベースの Microsoft Azure への SQL Server マネージド バックアップを有効にして構成する

このチュートリアルでは、コンピューター Node1 と Node2 上のデータベース (AGTestDB) に対して Microsoft Azure への SQL Server Managed Backup を有効にして構成する手順と、SQL Server マネージド バックアップを Microsoft Azure の正常性状態に監視できるようにする手順について説明します。

  1. Azure ストレージ アカウントを作成します。 バックアップは Azure Blob Storage サービスに格納されます。 Azure ストレージ アカウントがまだない場合は、まず Azure ストレージ アカウントを作成する必要があります。 詳細については、「 Azure ストレージ アカウントの作成」を参照してください。 ストレージ アカウント名、アクセス キー、ストレージ アカウントの URL を書き留めます。 ストレージ アカウント名とアクセス キー情報は、SQL 資格情報の作成に使用されます。 SQL 資格情報は、ストレージ アカウントに対する認証を行うために、バックアップ操作中に Microsoft Azure への SQL Server Managed Backup によって使用されます。

  2. SQL 資格情報を作成します。 ストレージ アカウントの名前を ID として、ストレージ アクセス キーをパスワードとして使用して、SQL 資格情報を作成します。

  3. SQL Server エージェント サービスが開始され、実行されていることを確認します。 SQL Server エージェントが現在実行されていない場合は起動します。 Microsoft Azure への SQL Server マネージド バックアップでは、バックアップ操作を実行するために SQL Server エージェントがインスタンスで実行されている必要があります。 バックアップ操作を定期的に実行できるように、SQL エージェントを自動的に実行するように設定できます。

  4. 保持期間を決定します。 バックアップ ファイルに必要な保有期間を決定します。 保持期間は日数で指定され、1 ~ 30 の範囲で指定できます。 リテンション期間によって、データベースの回復可能性期間が決まります。

  5. バックアップ中に暗号化に使用する証明書または非対称キーを作成します 。最初のノード Node1 に証明書を作成し、 BACKUP CERTIFICATE (Transact-SQL) を使用してファイルにエクスポートします。 ノード 2 で、ノード 1 からエクスポートされたファイルを使用して証明書を作成します。 ファイルから証明書を作成する方法の詳細については、 CREATE CERTIFICATE (Transact-SQL) の例を参照してください。

  6. Node1 上の AGTestDB 用 Microsoft Azure への SQL Server マネージド バックアップを有効にして構成 します。SQL Server Management Studio を起動し、可用性データベースがインストールされている Node1 上のインスタンスに接続します。 要件に従ってデータベース名、ストレージ URL、SQL 資格情報、保持期間の値を変更した後、クエリ ウィンドウから次のステートメントを実行します。

    Use msdb;  
    GO  
    EXEC smart_admin.sp_set_db_backup   
                    @database_name='AGTestDB'   
                    ,@retention_days=30   
                    ,@credential_name='MyCredential'  
                    ,@encryption_algorithm ='AES_128'  
                    ,@encryptor_type= 'Certificate'  
                    ,@encryptor_name='MyBackupCert'  
                    ,@enable_backup=1;  
    GO  
    

    暗号化用の証明書の作成の詳細については、「暗号化されたバックアップを作成する」の 「バックアップ証明書 の作成」の手順 参照してください。

  7. Node2 上の AGTestDB 用 Microsoft Azure への SQL Server マネージド バックアップを有効にして構成 します。SQL Server Management Studio を起動し、可用性データベースがインストールされている Node2 上のインスタンスに接続します。 要件に従ってデータベース名、ストレージ URL、SQL 資格情報、保持期間の値を変更した後、クエリ ウィンドウから次のステートメントを実行します。

    Use msdb;  
    GO  
    EXEC smart_admin.sp_set_db_backup   
                    @database_name='AGTestDB'   
                    ,@retention_days=30   
                    ,@credential_name='MyCredential'  
                    ,@encryption_algorithm ='AES_128'  
                    ,@encryptor_type= 'Certificate'  
                    ,@encryptor_name='MyBackupCert'  
                    ,@enable_backup=1;  
    GO  
    

    指定したデータベースで、Microsoft Azure への SQL Server マネージド バックアップが有効になりました。 データベースのバックアップ操作の実行が開始されるまでに最大 15 分かかる場合があります。 バックアップは、優先バックアップ レプリカで行われます。

  8. 拡張イベントの既定の構成を確認します。 Microsoft Azure への SQL Server マネージド バックアップを使用してバックアップのスケジュールを設定しているレプリカで、次の transact-SQL ステートメントを実行して、拡張イベントの構成を確認します。 これは通常、データベースが属する可用性グループの推奨バックアップ レプリカ設定です。

    SELECT * FROM smart_admin.fn_get_current_xevent_settings(); 
    

    管理者、運用、分析チャネルのイベントが既定で有効になっており、無効にできないことが表示されます。 これは、手動による介入を必要とするイベントを監視するのに十分である必要があります。 デバッグ イベントは有効にできますが、これらのチャネルには、SQL Server Managed Backup to Microsoft Azure が問題を検出して解決するために使用する情報イベントとデバッグ イベントが含まれます。 詳細については、「 Azure への SQL Server マネージド バックアップの監視」を参照してください。

  9. 正常性状態の通知を有効にして構成する: Microsoft Azure への SQL Server マネージド バックアップには、注意が必要なエラーまたは警告の電子メール通知を送信するエージェント ジョブを作成するストアド プロシージャがあります。 このような通知を受信するには、SQL Server エージェント ジョブを作成するストアド プロシージャの実行を有効にする必要があります。 次の手順では、電子メール通知を有効にして構成するプロセスについて説明します。

    1. インスタンスでまだ有効になっていない場合は、データベース メールをセットアップします。 詳細については、「 データベース メールの構成」を参照してください。

    2. データベース メールを使用するように SQL Server エージェント通知を構成します。 詳細については、「データベース メールを使用するように SQL Server エージェント メールを構成する」を参照してください。

    3. 電子メール通知を有効にして、バックアップ エラーと警告を受信します。 クエリ ウィンドウから、次の Transact-SQL ステートメントを実行します。

      EXEC msdb.smart_admin.sp_set_parameter  
      @parameter_name = 'SSMBackup2WANotificationEmailIds',  
      @parameter_value = '<email>'  
      

      詳細と完全なサンプル スクリプトについては、「 Azure への SQL Server マネージド バックアップの監視」を参照してください。

  10. Azure ストレージ アカウントのバックアップ ファイルを表示します。 SQL Server Management Studio または Azure 管理ポータルからストレージ アカウントに接続します。 Microsoft Azure への SQL Server マネージド バックアップを使用するように構成したデータベースをホストする SQL Server のインスタンスのコンテナーが表示されます。 また、データベースに対して Microsoft Azure への SQL Server マネージド バックアップを有効にしてから 15 分以内に、データベースとログ バックアップが表示される場合もあります。

  11. 正常性状態を監視します。 以前に構成した電子メール通知を使用して監視することも、ログに記録されたイベントをアクティブに監視することもできます。 イベントを表示するために使用される Transact-SQL ステートメントの例を次に示します。

    --  view all admin events  
    Use msdb;  
    Go  
    DECLARE @startofweek datetime  
    DECLARE @endofweek datetime  
    SET @startofweek = DATEADD(Day, 1-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)   
    SET @endofweek = DATEADD(Day, 7-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)  
    
    DECLARE @eventresult TABLE  
    (event_type nvarchar(512),  
    event varchar (512),  
    timestamp datetime  
    )  
    
    INSERT INTO @eventresult  
    
    EXEC smart_admin.sp_get_backup_diagnostics @begin_time = @startofweek, @end_time = @endofweek  
    
    SELECT * from @eventresult  
    WHERE event_type LIKE '%admin%'  
    
    -- to enable debug events  
    Use msdb;  
    Go  
    EXEC smart_admin.sp_set_parameter 'FileRetentionDebugXevent', 'True'  
    
    --  View all events in the current week  
    Use msdb;  
    Go  
    DECLARE @startofweek datetime  
    DECLARE @endofweek datetime  
    SET @startofweek = DATEADD(Day, 1-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)   
    SET @endofweek = DATEADD(Day, 7-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)  
    
    EXEC smart_admin.sp_get_backup_diagnostics @begin_time = @startofweek, @end_time = @endofweek;  
    

このセクションで説明する手順は、データベースで初めて Microsoft Azure への SQL Server マネージド バックアップを構成するための手順です。 同じシステム ストアド プロシージャ smart_admin.sp_set_db_backup を使用して既存の構成を変更し、新しい値を指定できます。 詳細については、「 SQL Server Managed Backup to Azure - Retention and Storage Settings」を参照してください。

AlwaysOn 可用性グループ構成からデータベースを削除するときの考慮事項

AlwaysOn 可用性グループ構成からデータベースが削除され、スタンドアロン データベースになった場合は、 smart_admin.sp_backup_on_demand (Transact-SQL) を使用してバックアップを実行することをお勧めします。 この方法でデータベース バックアップを作成すると、新しいバックアップ チェーンが確立され、データベースが可用性グループの一部であったときにバックアップが格納された可用性コンテナーとは対照的に、ファイルはインスタンス固有のコンテナーに配置されます。

警告

可用性グループの状態の変更以前のバックアップからのこのシナリオでのデータベースの回復可能性は保証されません。