共用方式為


針對可用性群組設定 SQL Server 受控備份至 Azure

本主題是有關針對參與 AlwaysOn 可用性群組的資料庫,將 SQL Server 受管理的備份設定至 Microsoft Azure 的教學課程。

可用性群組組態

SQL Server 受控備份至 Microsoft Azure 支援可用性群組資料庫,無論複本是全都設定在內部部署、完全在 Azure 上,或是在內部部署與一或多個 Azure 虛擬機之間的混合式實作。 不過,您可能需要針對一或多個實作考慮下列事項:

  • 記錄備份頻率:記錄備份的頻率取決於時間和記錄增長。 例如,除非兩小時內使用的記錄空間是5 MB以上,否則會每隔2小時進行一次記錄備份。 這適用於所有實作、內部部署、雲端或混合式。

  • 網路頻寬:這適用於副本位於不同實體位置的情況,例如在混合雲或僅限雲端配置中跨越不同 Azure 區域的情況。 網路頻寬可能會影響次要副本的延遲,如果次要副本設定為同步複寫,這可能會導致主要副本上的日誌成長。 如果將次要複本設定為同步複寫,由於網路延遲,次要複本可能會無法跟上,這可能導致故障轉移至次要複本時資料遺失。

設定 SQL Server 受控備份至 Microsoft Azure 用於可用性資料庫。

許可權:

  • 需要具有ALTER ANY CREDENTIAL 許可權的資料庫角色db_backupoperator成員資格,以及EXECUTEsp_delete_backuphistory預存程式的許可權。

  • 需要 smart_admin.fn_get_current_xevent_settings函式的 SELECT 許可權。

  • EXECUTE需要 smart_admin.sp_get_backup_diagnostics 預存程序的許可權。 此外,它需要 VIEW SERVER STATE 許可權,因為它會在內部呼叫其他需要此許可權的系統物件。

  • 需要EXECUTEsmart_admin.sp_set_instance_backupsmart_admin.sp_backup_master_switch預存程序的許可權。

以下是使用 SQL Server Managed Backup 至 Microsoft Azure 設定 AlwaysOn 可用性群組的基本步驟。 本主題稍後會說明詳細的逐步教學課程。

  1. 建立可用性群組之後,請設定慣用的備份複本。 SQL Server 受控備份到 Microsoft Azure 也會使用此可用性群組的設定,以判斷哪個副本用於備份。 如需如何設定備份設定的逐步說明,請參閱SQL Server 可用性複本上的備份設定。 如果您要建立新的 AlwaysOn 可用性群組,請參閱 開始使用 AlwaysOn 可用性群組 (SQL Server)

  2. 設定次要複本的唯讀連線存取權。 如需如何設定只讀存取的逐步指示,請參閱 在可用性複本上設定 Read-Only 存取權 (SQL Server)

  3. 指定備份複本。 SQL Server 受控備份會使用優先選擇的備份複本設定,以判斷要從 Microsoft Azure 進行備份排程的來源資料庫。 若要判斷目前複本是否為慣用的備份複本,請使用 sys.fn_hadr_backup_is_preferred_replica (Transact-SQL) 函式。

  4. 在每個復本上執行 SQL Server 受控備份,使用 smart-admin.sp_set_db_backup 預存程式為資料庫設定 Microsoft Azure 組態。

    SQL Server 受控備份至 Microsoft Azure 在故障轉移後的行為: SQL Server 受控備份至 Microsoft Azure 在故障轉移事件後將繼續運作,並維持備份副本與復原能力。 故障轉移後不需要採取任何特定措施。

考慮和需求:

針對參與 AlwaysOn 可用性群組的資料庫,將 SQL Server 受控備份設定為Microsoft Azure 需要特定考慮和需求。 以下是考慮和需求清單:

  • 參與相同可用性群組之 SQL Server 的所有節點上的所有資料庫,其 SQL Server 受控備份到 Microsoft Azure 的配置設定應該相同。 您可以通過將主要和所有複本在資料庫層級設置相同的 SQL Server 受控備份到 Microsoft Azure 的設定,或在所有參與可用性群組的節點上設置相同的 SQL Server 受控備份到 Microsoft Azure 的預設設定,來達成此目的。 建議您將 SQL Server 受控備份設定為Microsoft Azure,因為將 SQL Server Managed Backup 設定為資料庫層級Microsoft Azure,可讓您將設定隔離至資料庫,並將預設設定的變更影響實例上所有其他資料庫。

  • 指定備份複本。 SQL Server 受控備份會使用慣用的備份複本設定來Microsoft Azure 來排程備份。 若要判斷目前複本是否為慣用的備份複本,請使用 sys.fn_hadr_backup_is_preferred_replica (Transact-SQL) 函式。

  • 如果次要複本設定為慣用的複本,它應該設定為至少具有唯讀連線存取權。 不支持沒有輔助資料庫連線存取權的可用性群組。 如需詳細資訊,請參閱設定可用性複本上的唯讀存取 (SQL Server)

  • 如果您在設定可用性群組之後將 SQL Server 受控備份設定為Microsoft Azure,SQL Server 受控備份至 Microsoft Azure 會嘗試複製任何現有的備份,並將其複製到記憶體容器。 如果 SQL Server 受控備份到 Microsoft Azure 找不到或無法存取現有的備份,它會安排進行完整的資料庫備份。 這樣做是為了將可用性群組資料庫的備份作業優化。

  • 如果您要建立新的可用性資料庫,而且不想將實例層級設定套用至資料庫,建議您考慮停用實例層級設定

  • 使用加密時,請在所有複本上使用相同的憑證。 這協助確保在故障轉移或還原至不同複本時,備份作業能持續且不間斷。

啟用和設定 SQL Server 受控備份至 Microsoft Azure 的可用性資料庫

本教學課程說明在 Node1 和 Node2 計算機上啟用和設定 SQL Server 受控備份到 Microsoft Azure,以進行資料庫(AGTestDB)的步驟,接著說明如何啟用監視 SQL Server 受控備份到 Microsoft Azure 的健康狀態的步驟。

  1. 建立 Azure 記憶體帳戶: 備份會儲存在 Azure Blob 記憶體服務中。 如果您還沒有 Azure 記憶體帳戶,您必須先建立 Azure 記憶體帳戶。 如需詳細資訊,請參閱 建立 Azure 記憶體帳戶。 記下記憶體帳戶的名稱、存取金鑰和記憶體帳戶的 URL。 儲存體帳戶名稱和存取金鑰資訊可用來建立 SQL 認證。 SQL Server 管理備份在備份操作期間使用 SQL 憑證來驗證 Microsoft Azure 的儲存帳戶。

  2. 建立 SQL 認證: 使用記憶體帳戶的名稱作為身分識別和記憶體存取金鑰作為密碼來建立 SQL 認證。

  3. 確認 SQL Server Agent 服務已啟動且在執行中: 如果目前尚未執行 SQL Server Agent,請加以啟動。 把 SQL Server 受管理備份到 Microsoft Azure 需要 SQL Server Agent 執行於該實例上,以執行備份工作。 您可能想要將 SQL Agent 設定為自動執行,以確保備份作業可以定期執行。

  4. 判斷保留期間: 判斷備份檔所需的保留期間。 保留期間是以天為單位指定,範圍從 1 到 30。 保留期間會決定資料庫的復原時間範圍。

  5. 建立憑證或非對稱密鑰,以在備份期間用於加密: 在第一個節點上建立憑證 Node1,然後使用 BACKUP CERTIFICATE (Transact-SQL)將它匯出至檔案。 在節點 2 上,使用從節點 1 導出的檔案建立憑證。 如需從檔案建立憑證的詳細資訊,請參閱 CREATE CERTIFICATE (Transact-SQL)中的範例。

  6. 啟用並設定 SQL Server 受控備份至 Microsoft Azure,適用於 Node1 上的 AGTestDB: 啟動 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. 啟用並配置 AGTestDB 在 Node2 上的 SQL Server 管理備份到 Microsoft Azure: 啟動 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  
    

    您指定的資料庫現在已啟用 SQL Server 管理備份至 Microsoft Azure。 資料庫上的備份作業可能需要 15 分鐘才會開始執行。 備份將會在優先的備份複本上進行。

  8. 檢閱擴充事件預設組態: 在 SQL Server 受控備份至 Microsoft Azure 所使用的複本上執行下列 transact-SQL 語句,以檢閱擴充事件組態。 這通常是資料庫所屬可用性群組的慣用備份複本設定。

    SELECT * FROM smart_admin.fn_get_current_xevent_settings(); 
    

    您應該會看到,預設會啟用管理員、操作和分析這些通道事件,且無法停用。 這應該足以監視需要手動介入的事件。 您可以啟用偵錯事件,但這些通道包含資訊和偵錯事件,這些事件是 SQL Server 受控備份至 Microsoft Azure 用來偵測及解決問題的。 如需詳細資訊,請參閱 監視 SQL Server 受控備份至 Azure

  9. 啟用及設定健康狀態的通知: SQL Server Managed Backup to Microsoft Azure 具有預存程式,可建立代理作業,傳送可能需要注意的錯誤或警告的電子郵件通知。 若要接收這類通知,您必須啟用建立 SQL Server Agent 作業的預存程式。 下列步驟描述啟用及設定電子郵件通知的程序:

    1. 如果執行個體尚未啟用 Database Mail,請進行設定。 如需詳細資訊,請參閱< Configure Database Mail>。

    2. 設定 SQL Server Agent 通知以使用 Database Mail。 如需詳細資訊,請參閱 Configure SQL Server Agent Mail to Use Database Mail

    3. 啟用電子郵件通知接收備份錯誤和警告: 從 [查詢] 視窗中,執行下列 Transact-SQL 陳述式:

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

      如需詳細資訊和完整範例腳本,請參閱 監視 SQL Server 受控備份至 Azure

  10. 在 Azure 記憶體帳戶中檢視備份檔: 從 SQL Server Management Studio 或 Azure 管理入口網站連線到記憶體帳戶。 您會看到一個容器,其中的 SQL Server 實例裝載了您配置為使用 SQL Server 受控備份至 Microsoft Azure 的資料庫。 您也可以在啟用 SQL Server 受控備份到 Microsoft Azure 後的 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;  
    

本節所述的步驟特別適用於在資料庫上第一次將 SQL Server 受控備份設定為Microsoft Azure。 您可以使用與 smart_admin.sp_set_db_backup 相同的系統預存程式來修改現有的組態,並提供新的值。 如需詳細資訊,請參閱 SQL Server 受控備份至 Azure - 保留和記憶體設定

從 AlwaysOn 可用性群組設定移除資料庫時的考慮

如果資料庫已從 AlwaysOn 可用性群組組態中移除,而且現在是獨立資料庫,建議您使用 smart_admin.sp_backup_on_demand (Transact-SQL) 執行備份。 以這種方式建立資料庫備份時,它會建立新的備份鏈結,而檔案會放在實例特定的容器中,而不是當資料庫是可用性群組一部分時儲存備份的可用性容器。

警告

此案例中資料庫從可用性群組狀態變更之前的備份復原能力並不保證。