第一章 ? 測試 背景
SQL SERVER 日志傳送功能可自動復制數據庫的日志文件,并回存到備份服務器 (standby server) 的另外一個數據庫。因此可大幅提高 SQL Server 數據庫的可用性。因為備份數據庫完整地接收來源數據庫的變化情況,所以它就是一份來源數據庫的復本。它們之間的差別僅在于日志復制與加載過程所產生的時間差。然而,當主服務器因故障停機時,您就可以將備份服務器更改為新的主服務器。如果原來的主服務器可重新上線使用,那么您可以將其設定為新的備份服務器 - 事實上就是對調兩臺服務器的角色。
第二章 ? 測試目的
主要測試 SQL SERVER 企業版日志自動傳送、自動裝載功能、主運行服務器與備份服務器的角色切換功能及通過監視服務器對日志傳送及備份服務器進行維護。
第三章 ? 測試 結果評判標準
將 SQL SERVER 主服務器上數據庫的內容自動傳送并應用到備份服務器的數據庫上。
第四章 ? 測試環境
WINDOWS
2000
,
WINDOWS
2000
,
SQL SERVER2000 企業版
第五章 ? 日志傳送和加載的測試過程
5.1 ? 設定日志傳送的各種服務器:
主服務器 (primary server) 即是實際處理業務的主運行服務器。這里設定 222 為主服務器。備份服務器 (secondary server) 上存放日志傳送的目的數據庫,用來復制與回存來主運行數據庫的日志文件。這里設定 220 為備份服務器。監控服務器 (monitor server) 用來監控主服務器與備份服務器。這里設定 220 為備份服務器。 SQL Server 2000 使用 Enterprise Manager 的日志傳送監控工具來監控每一組傳送中的日志資料。 Microsoft 建議將監控用服務器安裝在另一臺服務器。
5.2 ? 日志傳送工具:
在 SQL SERVER2000 中日志傳送的配置工作只能由向導完成,不能使用編碼實現。
開始前要做的一些檢查或操作:
1. 檢查所有服務器的權限設置,用來設定日志傳送的 Windows 帳號必須擁有所有服務器上 SQL Server 系統管理者 (sa) 的權限。
2. 在主 / 備份服務器上建立共享文件夾。首先,將來主運行數據庫日志文件所在的目錄設定為共享目錄。接著在備份服務器上,將打算回存日志文件的目錄也共享出來。并將這兩個共享目錄的權限開放給每一臺服務器上 SQL Agent 所使用的 Windows 帳號。這里采用 administrator 登錄,將 SQLAgent 服務指定給 administrator 用戶。
3. 建立并初始化備份數據庫。
在主數據庫上建立備份:
backup database pubs to disk='c:\pubs'
backup log pubs to disk='c:\pubslog'
在備份數據庫上:
alter database pubs set single_user
USE master
GO
RESTORE DATABASE pubs
?? FROM disk='c:\pubs'
?? WITH STANDBY = 'c:\undopubs.ldf'
RESTORE LOG PUB FROM disk=’c:\pubslog’
?? WITH STANDBY = 'c:\undopubs.ldf'
alter database pubs set multi_user
4. 在 Enterprise Manager 注冊此 222 和 220 這兩臺服務器。
5.3 ? 測試過程:
在完成上面的準備動作后,可以打開數據庫維護計劃向導來設定日志傳送。依據下列步驟完成:
歡迎畫面:
在下面的對話框中選取數據庫:勾選“將事務日志傳送到。。。。。。
下列這三個步驟什么都不選:即連點三下“下一步“
在下面的存儲事務日志的對話框中選擇共享的目錄。
選擇網絡共享:在主服務器上選擇。
接下來選擇指定記錄傳送目的地:點選【 Add 】按鈕后可開啟『新增目的數據庫』對話框。
里面的信息都是關于備份服務器的信息:
【服務器名稱】下拉式選單會列出您在先前準備工作中曾利用 Enterprise Manager 所注冊的 Secondary Server 名稱。在【目錄】文字字段里,請輸入 Secondary Server 的目錄名稱,用以接收來源數據庫日志文件復本。注意此名稱為本地端路徑名稱,而不是分享目錄名稱。
有關數據庫的裝載狀態,您有兩種選項可以設定:無恢復模式 (No recovery mode) 與備用模式 (Standby mode) 。所謂的『無恢復模式』表示使用者將無法進行備份數據庫的查詢,唯一可執行的動作只有回存日志文件。而『備用模式』則是將數據庫設定成只讀狀態只要不是在回存數據庫的時候,您都可以查詢備份數據庫中的內容。窗口內還有一個【終止數據庫中的使用者 ( 建議選項 ) 】選項,會在回存數據庫或是回存日志文件時發生動作。在回存數據庫或是日志文件時,『回存程序』將是數據庫內唯一的使用者。所以, Microsoft 建議您勾選此選項,否則其他使用者可能會影響回存動作的進行。這里選擇此選項。
接下來連按幾次“下一步“即完成設置。
注:日志傳送的設置可以在設置完成后點擊“維護計劃“的屬性中修改上述設置。
第六章
?
日志傳送監視器的測試過程
6.1 ? 設置日志傳送監視器
在服務器上執行下列存儲過程,監視日志傳送。
運行
sp_add_log_shipping_primary
以通知監視服務器哪臺計算機在日志傳送對中是主服務器。存儲過程的輸出將是
primary_id
,它將用于
sp_add_log_shipping_secondary
存儲過程。運行
sp_add_log_shipping_secondary
以通知監視服務器哪臺計算機在日志傳送對中是輔助服務器。下例為數據庫的現有日志傳送對設置日志傳送監視器。在手工設置該監視器之前,必須已使用數據庫維護計劃向導設置了日志傳送。注意,在向導設置過程中也要創建監視器。
EXEC sp_add_log_shipping_primary
??
@primary_server_name = 'MyPrimaryServer',
??
@primary_database_name = 'Northwind',
??
@maintenance_plan_id = '9B4E380E-11D2-41FC-9BA5-A8EB
040A
3DEF',
??
@backup_threshold = 15,
??
@threshold_alert = 14420,
??
@threshold_alert_enabled = 1,
??
@planned_outage_start_time = 0,
??
@planned_outage_end_time = 0,
??
@planned_outage_weekday_mask = 0
?
EXEC sp_add_log_shipping_secondary
??
@primary_id = 1,
??
@secondary_server_name = 'MySecondaryServer',
??
@secondary_database_name = 'Northwind',
??
@secondary_plan_id = 'B
5C
330FF-1081-4FCB-83D0-955DDFB56BA5',
??
@copy_enabled = 1,
??
@load_enabled = 1,
??
@out_of_sync_threshold = 15,
??
@threshold_alert = 14421,
??
@threshold_alert_enabled = 1,
??
@planned_outage_start_time = 0,
??
@planned_outage_end_time = 0,
??
@planned_outage_weekday_mask = 0,
??
@allow_role_change = 0
GO
6.2 ? 日志傳送的監視:
當您正確設定日志傳送之后,
SQL
SERVER
會激活監控服務器上
Enterprise Manager
的日志傳送監控工具程序。此外,
SQL
SERVER
會建立兩個
SQL Agent
警示工作
(alert job)
:一個用來執行工作,另一個處理同步偏離情況。使用監控工具程序的方式是,開啟
Enterprise Manager
并連至監控服務器,展開【
Management
】節點,然后點選【日志傳送監視器
(Log Shipping Monitor)
】。當您點選此工具程序時,其內會列出日志傳送配對服務器的清單。您可在配對服務器上按下右鍵,監視其備份、復制與回存等工作的執行歷史紀錄。這些歷史紀錄十分有用,因為您從這里得到的錯誤訊息會比從次要服務器上
(SQL Agent
復制與回存工作
)
得到的更為詳盡。
如圖所示:當您開啟配對服務器之屬性對話框,并進入【狀態】設定頁時,您可監視此配對服務器執行備份與回存程序之狀態。日志文件名為
first_file_000000000000.trn
。這并不是實際的文件名稱,只不過是用來標示
Agent
尚未處理任何檔案而已。在【狀態】設定頁也會顯示備份、復制以及加載
(
回存
)
等動作執行時所耗費的時間。此設定頁之信息不會自動更新,所以您必須將此對話盒關閉后再開啟,才能更新其資料。
在下面這兩個對話框中可以查看在主運行服務器上的事務日志備份情況和在備份服務器上日志復制和日志裝載的情況。
第七章 ? 日志傳送角色轉變的測試過程
日志傳送支持角色轉變,而角色轉變需要下列基本步驟:
一、創建數據轉換服務 (DTS) 包,將當前的主服務器復制到當前的輔助服務器。
二、創建作業,從當前的主服務器備份 syslogins ,并將文件復制到當前的輔助服務器的某個目錄下,然后執行該 DTS 包。
三、執行角色更改,使當前的輔助服務器成為當前的主服務器。
在執行日志傳送角色更改前,該日志傳送對的維護計劃必須在輔助服務器上已經存在。可以使用數據庫維護計劃向導創建維護計劃,或者通過使用主數據庫維護計劃用戶界面上的 " 添加輔助服務器 " 對話框來添加輔助服務器。
7.1 ? 創建 DTS 包
使用 DTS 設計器在當前的主服務器上創建 DTS 包。將登錄從當前的主服務器復制到當前的輔助服務器。該包應使用位于設計器任務列表中的 " 傳輸登錄任務 " 。
在 " 源 " 服務器列表中的 " 源 " 選項卡上的 " 傳輸登錄 " 對話框內,輸入源服務器(當前的主服務器)。
單擊 " 使用 Windows 身份驗證 " 或 " 使用 SQL Server 身份驗證 " 。
在 " 目的服務器 " 列表的 " 目的 " 選項卡上,輸入目的服務器(當前的輔助服務器)。
單擊 " 使用 Windows 身份驗證 " 或 " 使用 SQL Server 身份驗證 " 。
在 " 登錄 " 選項卡上,單擊 " 包運行時檢測到的所有服務器登錄 " 或 " 選定數據庫的登錄 " 。
保存該包。
7.2 ? 創建作業
從當前的主服務器備份 syslogins 文件,并將文件復制到當前的輔助服務器的某個目錄下,然后執行該 DTS 包。選擇 " 新建作業 " 以打開 " 常規 " 選項卡上的 " 新建作業屬性 " 對話框。在當前的主服務器上,創建由 sa 擁有的作業,或由對兩臺服務器都擁有 sysadmin 權限的登錄。
在 " 步驟 " 選項卡上單擊 " 新建 " 按鈕以打開 " 新建作業步驟 " 對話框,然后創建下列作業步驟:
向外大容量復制
在 " 類型 " 列表中,選擇 " 操作系統命令 (CmdExec)" 選項。在 " 命令 " 文本框內輸入如下命令:
bcp master..syslogins out localpath\syslogins.dat /N /S current_primary_servername /U sa /P sa_password
單擊 " 高級 " 選項卡,然后在 " 成功時操作 " 列表中選擇 " 轉到下一步 " 。在 " 失敗時操作 " 列表中選擇 " 退出報告失敗的作業 " 。
復制文件
在 " 類型 " 列表中,選擇 "Transact-SQL 腳本 (T-SQL)" 。在 " 數據庫 " 列表中,指定 master 。在 " 命令 " 文本框內輸入如下命令:
EXEC xp_cmdshell 'copy localpath\syslogins.dat destination_share'
單擊 " 高級 " 選項卡,然后在 " 成功時操作 " 列表中選擇 " 轉到下一步 " 。在 " 失敗時操作 " 列表中選擇 " 退出報告失敗的作業 " 。
傳輸登錄
在 " 類型 " 列表中,選擇 " 操作系統命令 (CmdExec)" 選項。在 " 命令 " 文本框內輸入如下命令:
DTSRun /Scurrent_primary_server /Uuser_nName /Ppassword /Npackage_name /Mpackage_password
在 " 新建作業屬性 " 對話框中單擊 " 調度 " 選項卡,然后創建運行一次或反復運行的作業調度。
7.3 ? 執行角色轉變
必須由 SQL Server 管理員執行服務器角色轉變。在標記為當前主服務器的 SQL Server 實例上運行 sp_change_primary_role 。下例顯示如何使主數據庫不再是主數據庫。 current_primary_dbname 是當前主數據庫的名稱。
EXEC sp_change_primary_role
??? @db_name = 'current_primary_dbname',
??? @backup_log = 1,
??? @terminate = 0,
??? @final_state = 2,
??? @access_level = 1
GO
在標記為當前輔助服務器的 SQL Server 實例上運行 sp_change_secondary_rol 。下例顯示如何使輔助數據庫成為主數據庫。 current_secondary_dbname 是當前輔助數據庫的名稱。
EXEC sp_change_secondary_role
??? @db_name = 'current_secondary_dbname',
??? @do_load = 1,
??? @force_load = 1,
??? @final_state = 1,
??? @access_level = 1,
??? @terminate = 1,
??? @stopat = NULL
GO
在標記為監視器的 SQL Server 實例上運行 sp_change_monitor_role 。下例顯示如何更改監視器以反映新的主數據庫。 new_source_directory 是主服務器轉儲事務日志的位置的路徑。
EXEC sp_change_monitor_role
??? @primary_server = 'current_primary_server_name',
??? @secondary_server = 'current_secondary_server_name',
??? @database = 'current_secondary_dbname',
??? @new_source = 'new_source_directory'
GO
在現在標記為主服務器(從前的輔助服務器)的 SQL Server 實例上運行 sp_resolve_logins 。必須從目標數據庫運行存儲過程。
下例顯示如何用從前的主服務器中的登錄解析新的主服務器上的登錄。 destination_path 是在復制文件作業步驟中指定的目的共享。 filename 與 BCP 輸出作業步驟中指定的相同, dbname 為新主數據庫的名稱。
EXEC sp_resolve_logins
??? @dest_db = 'dbname',
??? @dest_path = 'destination_path',
??? @filename = 'filename'
GO
第八章 ? 測試結論
根據對 SQL SERVER 日志傳送功能的測試情況,可以看出 SQL SERVER2000 企業版中大大加強了數據庫可用性這方面的功能。備份數據庫不但增加了數據庫的可用性,而且在主運行數據庫處于高峰時也可以分擔一些查詢方面的業務。但目前 SQL SERVER2000 企業版中的日志傳送功能還只能利用數據庫維護計劃向導來完成,出現錯誤不容易調試。另外主服務器和備份服務器進行角色切換的過程比較復雜,且不易成功。當切換成功后,從前的輔助服務器現在是當前的主服務器,并準備承擔主服務器的功能。而從前的主服務器已不再是日志傳送對的一方了。必須將從前的主服務器作為輔助服務器添加到新的主服務器,才能在兩個數據庫之間建立日志傳送對。目前,原主服務器變化備份服務器一過程并不能自動切換。
第九章 ? 附件
附件
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
