1. 概述
SQL Server 使用日志傳送,您可以自動将“主伺服器”執行個體上“主資料庫”内的事務日志備份發送到單獨“輔助伺服器”執行個體上的一個或多個“輔助資料庫”。事務日志備份分别應用于每個輔助資料庫。可選的第三個伺服器執行個體(稱為“監視伺服器”)記錄備份和還原操作的曆史記錄及狀态,還可以在無法按計劃執行這些操作時引發警報。當主伺服器因故障停機時,您就可以将備份伺服器更改為新的主伺服器。如果原來的主伺服器可重新上線使用,那麼您可以将其設定為新的備份伺服器 - 事實上就是對調兩台伺服器的角色。
2. 目的
主要測試SQLSERVER2008R2企業版日志自動傳送、自動裝載功能、主運作伺服器與備份伺服器的角色切換功能及通過監視伺服器對日志傳送及備份伺服器進行維護。
3. 測試環境
3.1. 主伺服器
Windows 2008R2 64bit,2G Mem,CPU 2.0GHz,區域網路,IP:192.168.102.4x
3.2. 輔助伺服器
Windows 2008R2 64bit,2G Mem,CPU 2.0GHz,區域網路,IP:192.168.102.4y
3.3. 監視伺服器
Windows 2008R2 64bit,2G Mem,CPU 2.0GHz,區域網路,IP:192.168.102.4z
3.4. 共享伺服器
Windows 2008R2 64bit,2G Mem,CPU 2.0GHz,區域網路,IP:192.168.102.4w
4. 配置日志傳送
4.1. 準備工作
4.1.1. 賬戶建立
Windows賬戶建立:分别在”主伺服器”,”輔助伺服器”,”監視伺服器”,”共享伺服器”上建立本地帳号”daleadmin”,密碼設定相同,并加入administrators組。
4.1.2. 檔案夾建立及共享安全設定
在共享伺服器上建立檔案夾”Logfiles”,同時設定共享,在”權限”中加入帳号”daleadmin”,允許其對該檔案夾有讀寫權限。該檔案夾主要用于主伺服器日志備份。
在主伺服器及輔助伺服器上建立檔案夾Logfiles,權限同上設定。該檔案夾主要用于拷貝及還原日志備份檔案。
4.1.3. SQLServer啟動賬戶設定
主伺服器,輔助伺服器,監視伺服器 上的SQLServer的服務及代理服務均以daleadmin
賬戶啟動。
4.1.4. 主伺服器上備份資料庫
use master go backup database Northwind to disk='\\192.168.102.4w\Logfiles\Northwind.bak' use Nortwind create table table10(id int) use master backup log Northwind |
4.1.5. 輔助伺服器上還原資料庫
--還原全備份 restore database from disk='\\192.168.102.4w\Logfiles\Northwind.bak' with file=1,norecovery --還原日志備份 with file=2,norecovery |
4.2. 配置日志傳送
在主伺服器上配置日志傳送
4.2.1. 事務日志備份設定,如下圖
4.2.2. 添加輔助伺服器并設定輔助資料庫如下圖
4.2.3. 設定監視伺服器
4.2.4. 測試日志傳送效果
經過以上配置,日志傳送已經配置成功,觀察輔助伺服器,将處于(備用/隻讀)模式。
下面我們來測試是否真正成功。
主伺服器執行
create table table11(id int) |
過幾分鐘檢視輔助伺服器,發現已成功建立table11,同時我們也可以通過在監視服伺服器執行以下存儲過程,檢視日志傳送的狀态。
exec sp_help_log_shipping_monitor exec sp_help_log_shipping_monitor_primary 'TestServer1','Northwind' exec sp_help_log_shipping_monitor_secondary 'TestServer2','Northwind' |
同時也可以通過檢視錯誤日志了解日志傳送的結果。
5. 輔助伺服器切換為主伺服器
5.1. 模拟故障
5.1.1. 将主伺服器(192.168.102.4x)的SQLServer伺服器停止
5.1.2. 到指定檔案夾下删除Northwind資料檔案
5.1.3. 重新開機SQLServer服務,此時資料庫Northwind已損壞,為不可用狀态。
5.1.4. 尾日志備份(假定此時主資料庫執行個體尚未損壞,仍可以執行T-SQL)
backup log Northwind to disk='\\192.168.102.4w\Logfiles\Northwindlog.bak' with no_truncate |
5.2. 拷貝檔案
5.2.1. 執行輔助伺服器的上的拷貝作業或者手動的拷貝還沒拷貝的日志檔案到”D:\logfiles”
5.2.2. 手動拷貝主資料庫的尾日志備份檔案Northwindlog.bak到D:\logfiles
5.3. 還原日志
5.3.1. 執行輔助伺服器上的還原作業還原尚未還原的日志檔案
5.3.2. 手動還原尾日志備份檔案
restore database Northwind from disk='D:\logfiles\Northwindlog.bak' with recovery |
6. 主/輔助伺服器角色互換
6.1. 作業禁用
6.1.1. 禁用原主伺服器(192.168.102.4x)上的備份作業
6.1.2. 禁用輔助伺服器(192.168.102.4y)上的拷貝及還原作業
6.1.3. 禁用監視伺服器(192.168.102.4z)上的警報作業
6.2. 重新配置日志傳送
配置方法參照上面方法
6.2.1. 192.168.102.4y上配置日志傳送,此時該伺服器為主伺服器
6.2.2. 192.168.102.4x 為輔助伺服器
6.2.3. 192.168.102.4z 為監視伺服器
6.3. 删除日志傳送
删除原主伺服器(192.168.102.4x)上的日志傳送,取消勾選”将此資料庫啟用為日志傳送配置中的主資料庫”即可
7. 總結
7.1. 問題總結
7.1.1. 注意點
7.1.1.1. 如果主伺服器上的SQL Server服務賬戶運作在本地系統賬戶下,必須在主伺服器本地建立檔案夾,并指定該檔案夾的本地路徑。一般建議建立專門的賬戶
作為SQLServer及SQLAgent 服務的啟動賬戶。
7.1.1.2. 如果選擇讓”Management Studio”從資料庫備份中初始化輔助資料庫,預設情況下輔助資料庫的資料檔案及日志檔案将于master資料庫的資料檔案和日志檔案放置在同一位置。此位置可能與主資料庫的資料及日志檔案處于不同的位置。
7.1.1.3. 若要監視此日志傳送,必須添加監視伺服器,若要以添加監視伺服器,則需要删除此日志傳送配置,然後重新配置。
7.1.1.4. 主伺服器日志截斷隻能通過備份日志,然後收縮日志檔案完成,且備份的日志檔案必須手動拷貝至輔助伺服器進行手動還原否則,日志傳送會失敗。
7.1.2. 錯誤日志分析
7.1.2.1. 錯誤日志内容
錯誤14421,嚴重性16,狀态1
the log shippingsecondary database TestServer2.Northwind has restore threshold of 8 mintues and is out of sysnc.
No restore wasperformed for 1 minitues.
Check agent log andshipping monitor information
7.1.2.2. 導緻該問題的可能原因
7.1.2.2.1. 主備伺服器日期時間相差很大(待測試)
7.1.2.2.2. 輔助伺服器與監視伺服器之間驗證出現了問題,輔助伺服器運作的還原作業不能連接配接到監視伺服器的MSDB資料庫以更新log_shipping_secondaries表中正确的值。
7.1.2.2.3. 如果還原采用備用模式,且沒有勾選”在還原備份時候斷開與使用者的連接配接”,還原時候有使用者連接配接上來也會報類似錯誤。
7.1.2.2.4. 主資料庫手動進行了日志備份但沒有手動複制過去還原也會報類似的錯誤。