共用方式為


針對可用性群組設定 SQL Server Managed Backup 到 Azure

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

可用性群組組態

SQL Server可用性群組資料庫支援受控備份至 Microsoft Azure、複本全部在內部部署或完全在 Azure 上設定,或內部部署與一或多部 Azure 虛擬機器之間的混合式實作。 但是,您可能必須針對一個或多個實作考量以下事項:

  • 記錄備份頻率:記錄備份的頻率會隨著時間和記錄而增加。 例如,系統會每隔兩個小時取得一次記錄備份,除非在這兩個小時內使用的記錄空間為 5 MB 或更多。 這適用於所有實作,不論是內部部署、雲端還是混合式。

  • 網路頻寬:這適用于複本位於不同實體位置的實作,例如混合式雲端,或跨雲端中不同的 Azure 區域設定。 網路頻寬可能會影響次要複本的延遲,而且如果次要複本設定為同步複寫,這可能會導致主要複本上的記錄增加。 如果次要複本設定為同步複寫,次要複本可能會因為網路延遲的緣故而跟不上同步,萬一容錯移轉到次要複本就可能會發生資料遺失。

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

權限:

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

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

  • EXECUTE需要smart_admin.sp_get_backup_diagnostics預存程式的許可權。 除此之外,因為它會從內部呼叫其他需要此權限的系統物件,所以還需要 VIEW SERVER STATE 權限。

  • EXECUTE需要 和 smart_admin.sp_backup_master_switch 預存程式的許可權 smart_admin.sp_set_instance_backup

以下是使用 SQL Server 受控備份至 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資料庫層級的受控備份可讓您將設定隔離到資料庫,以及預設設定的變更會影響實例上所有其他資料庫。

  • 指定備份複本。 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受控備份至 Microsoft Azure 使用 SQL 認證,以向儲存體帳戶進行驗證。

  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) 將它匯出至檔案。 在 Node2 上,使用從 Node1 匯出的檔案建立憑證。 如需從檔案建立憑證的詳細資訊,請參閱 CREATE CERTIFICATE (Transact-SQL) 中的範例。

  6. 在 Node1 上啟用並設定 SQL Server Managed Backup to Microsoft Azure for 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. 在 Node2 上啟用並設定 SQL Server Managed Backup to Microsoft Azure for AGTestDB:啟動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 受控備份至 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 受控備份至 Microsoft Azure 的資料庫SQL Server實例。 您也可以在啟用資料庫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) 執行備份。 當您以這種方式建立資料庫備份時,它會建立新的備份鏈結,而檔案將會放在實例特定容器中,而不是當資料庫是可用性群組一部分時儲存備份的可用性容器。

警告

在此情況下,從可用性群組狀態有所變更前的備份來復原資料庫的能力,則無法保證。