2012年5月29日 星期二

如何透過 Distributed Replay 進行資料庫升級評估

        在以往進行資料庫升級時,大部份都需要進行軟體相容性的測試,而最常見的就是在測試的時候,透過 [SQL Server Profiler] 進行SQL與T-SQL的錄製,然後再透過 [SQL Server Upgrade Advisor] 進行分析並產生報表資料,但經由這樣的測試,有時候仍然無法重現所有的問題,尤其是模擬大量使用者的情況。

針對上述的問題,SQL Server 2012推出了 [Distributed Replay] 的功能,讓您可以將錄製好的追踨檔分散到多台的Client端的機器上執行,藉以透過多台電腦的執行,找出系統升級後可能發生的問題。


 Distributed Replay 主要元件:
  • Distributed Replay 管理工具:用來與分散式重新執行控制器進行通訊的主控台應用程式 DReplay.exe。您可以使用管理工具來控制分散式重新執行。
  • Distributed Replay Controller:執行 Windows 服務 (SQL Server Distributed Replay Controller) 的電腦。Distributed Replay Controller 可協調 Distributed Replay Client 的動作。每個 Distributed Replay 環境都只能有一個 Controller 執行個體。
  • Distributed Replay Client:一部或多部執行 Windows 服務 (SQL Server Distributed Replay Client) 的電腦 (實體或虛擬)。多個 Distributed Replay Client 可共同運作,以模擬 SQL Server 執行個體的工作負載。每個 Distributed Replay 環境都可以有一個或多個用戶端。
  • 標伺服器:Distributed Replay Client 可用來重新執行追蹤資料的 SQL Server 執行個體。我們建議您將目標伺服器放置於測試環境中。

Distributed Replay 管理工具、Controller 及 Client 可以安裝在不同的電腦上,也可以安裝在同一部電腦上。在同一部電腦上,只能執行一個 Distributed Replay Controller 或 Client 服務的執行個體。



環境描述:
1、Distributed Replay 管理工具 + Distributed Replay Controller + Distributed Replay Client + 目標伺服器

由於我要模擬出二台客戶端的情況,所以第一台我會讓他同時擔任主控端與客戶端的角色,相對的此台機器上也會安裝SQL Server 2012的資料庫。

電腦名稱:SQL2012-RTM
IP:192.168.1.12
OS:Windows 2008 R2
DB:SQL Server 2012

2、Distributed Replay Client
此部份我以Windows 7的機器進行。

電腦名稱:win7-86
IP:192.168.1.80
OS:Windows 7

PS:Distributed Replay只有 SQL Server 2012 Web版本以上才有支援,而只有Enterprise可以支援到16個DReplayClient,其他的版本都只能支援一個Client。


1、安裝Distributed Replay

1-1 第一台 - 主控端 (Distributed Replay 管理工具 + Distributed Replay Controller  + Distributed Replay Client  )
在第一台的電腦上,除了資料庫之外,請一定要安裝下列的二個選項。

1-2 第二台 - Client(Distributed Replay Client )
關於第二台的部份,只需要安裝 Distributed Replay Client  即可,但由於此功能並沒有獨立安裝檔,所以仍需要放入SQL Server的光碟片進行安裝,在特徵選取的部份,只需勾選 [Distributed Replay Client] 即可。




2、環境設定

2-1 第一台 - 主控端
2-1-1 請更換 SQL Server 的啟動帳號為 Domain User。
          以 [caryhsu\a-cahs] 為例
2-1-2 請新增一個目錄提供給dreplay執行時進行輸出。
          以 [C:\labData\dreplay\OutFolder] 為例。
2-1-3 新增 [caryhsu\a-chas] 可以擁有讀寫下列目錄的權限。
  •           C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\DReplayController
  •           C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\DReplayClient
  •           C:\labData\dreplay\OutFolder
2-1-4 更改DReplay的設定檔。
依照預設值,不需特別的改變,如果你有興趣了解的話,再請參考下列的位置。

設定檔位址:C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\DReplay.Exe.Replay.config
參考說明:http://msdn.microsoft.com/zh-tw/library/ff878359

2-1-5 更改DReplayController的設定檔。
依照預設值,不需特別的改變。

設定檔位址:C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayController\DReplayController.config
參考說明:http://msdn.microsoft.com/zh-tw/library/ff878359

2-1-6 更改DReplayClient的設定檔。
請開啟下列的設定檔,更改Controller的名稱。

設定檔位址:C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\DReplayClient.config
參考說明:http://msdn.microsoft.com/zh-tw/library/ff878359
設定檔內容:

<?xml version="1.0" encoding="utf-8"?>
<Options>
  <Controller>SQL2012-RTM</Controller>
  <WorkingDirectory>C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\WorkingDir\</WorkingDirectory>
  <ResultDirectory>C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\ResultDir\</ResultDirectory>
  <LoggingLevel>CRITICAL</LoggingLevel>
</Options>

2-1-7 開啟 [系統管理工具] -> [服務],將下列兩個服務的啟動帳號變更為 [caryhsu\a-cahs]之後,然後啟動服務。
  • SQL Server Distributed Replay Controller
  • SQL Server Distributed Replay Client



2-2 第二台 - 客戶端(Client)
2-2-1 請新增一個目錄提供給dreplay執行時進行輸出。
          以 [C:\labData\dreplay\OutFolder] 為例。
2-2-2 新增 [caryhsu\a-chas] 可以擁有讀寫下列目錄的權限。
  •           C:\Program Files\Microsoft SQL Server\110\Tools\Binn\DReplayClient
  •           C:\labData\dreplay\OutFolder
2-1-3 更改DReplayClient的設定檔。
請開啟下列的設定檔,更改Controller的名稱。

設定檔位址:C:\Program Files\Microsoft SQL Server\110\Tools\DReplayClient\DReplayClient.config
參考說明:http://msdn.microsoft.com/zh-tw/library/ff878359
設定檔內容:

<?xml version="1.0" encoding="utf-8"?>
<Options>
  <Controller>SQL2012-RTM</Controller>
  <WorkingDirectory>C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\WorkingDir\</WorkingDirectory>
  <ResultDirectory>C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\ResultDir\</ResultDirectory>
  <LoggingLevel>CRITICAL</LoggingLevel>
</Options>

2-1-4 開啟 [系統管理工具] -> [服務],將下列服務的啟動帳號變更為 [caryhsu\a-cahs]之後,然後啟動服務。
  • SQL Server Distributed Replay Client

3、錄製追蹤檔案
首先我們必須透過SQL Server Profiler來進行追蹤,藉以記錄系統進行時所有執行的SQL語法。

3-1 啟動 SQL Server Profiler,然後連結到資料庫。
3-2 開啟一個新的追蹤,在範本的地方,請記得選擇 [TSQL_Replay]。


3-3 開始全部執行一次系統上的所有功能。
3-4 當全部執行完成後,請再點選停止後,再將追蹤檔儲存,並放置在下列的位址上。
避蹤檔儲存位址:C:\labData\dreplay\dreplay.trc


4、執行 DReplay
在執行DReplay之前大約的說明一下流程,簡單的來說主要分成兩大步驟,第一個是先進行Preprocess,然後再進行Replay的動作,以下的動作都只需在第一台的主機上執行即可,詳細流程如下。


4-1 執行Preprocess
4-1-1 開啟一個DOS Command視窗
4-1-2 切換目錄
cd C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\
4-1-3 預先啟動 DReplay 的 Preprocess模式
dreplay preprocess -i  "C:\labData\dreplay\dreplay.trc" -d "C:\labData\dreplay\OutFolder"


4-2 執行Replay
4-2-1 開始進行Replay
dreplay replay -d "C:\labData\dreplay\OutFolder" -o -w "SQL2012-RTM,win7-86" -s "SQL2012-RTM"



4-2-2 觀察目前執行的狀況
dreplay status -m localhost -f 60



執行完成後,所有的資料都會輸出到 C:\labData\dreplay\OutFolder 的目錄中,當然執行的過程可以透過4-2-2的語法即時的看到,以上是針對 DReplay 功能的介紹,也希望可以對大家有所幫助。


參考連結:
SQL Server Distributed Replay
http://msdn.microsoft.com/zh-tw/library/ff878183.aspx
安裝 Distributed Replay (安裝程式)
http://msdn.microsoft.com/zh-tw/library/gg471548
設定 Distributed Replay
http://msdn.microsoft.com/zh-tw/library/ff878359
Features Supported by the Editions of SQL Server 2012
http://msdn.microsoft.com/en-us/library/cc645993.aspx
使用 Upgrade Advisor 來準備升級
http://msdn.microsoft.com/zh-tw/library/ms144256.aspx


關鍵字:SQL 2012SQL ServerDistributed ReplayUpgrade Advisordreplay

沒有留言:

張貼留言