【IT168 专稿】我们该如何测试新的SQL Server上的负荷?如何创建新的SQL Server的负载?SQL Server 2012新增了分布式重播功能,该可帮助我们评估即将进行的SQL Server升级的影响,我们还可以使用它来帮助评估硬件和操作系统升级以及SQL Server优化的影响。
一.分布式重播的安装
建议您先配置适当的域用户帐户,然后再安装分布式重播功能。因为在安装分布式重播功能后,必须分配控制器和客户端服务帐户将运行为的安全主体。
用户帐户 | 要求 |
SQL Server 分布式重播控制器服务帐户 | 可以是域用户帐户或本地用户帐户。 如果使用本地用户帐户,则管理工具、控制器和客户端都必须在同一台计算机上运行。 |
SQL Server 分布式重播客户端服务帐户 | 可以是域用户帐户或本地用户帐户。 如果使用本地用户帐户,则控制器、客户端和目标 SQL Server 都必须在同一台计算机上运行。 |
用于运行分布式重播管理工具的交互式用户帐户 | 可以是本地用户帐户或域用户帐户。 若要使用本地用户帐户,管理工具和控制器必须在同一台计算机上运行。 |
在安装SQL Server 2012的时候,我们要选择分布式重播控制器和分布式重播客户端。
安装成功后,我们可以在安装文件夹对应的位置看到这样两个文件夹:
二.分布式重播的概念
Oracle已经拥有类似的功能(Real Application Testing),但单独购买会非常昂贵,而SQL Server 2012则包括了Distributed Replay。以下组件组成分布式重播环境:
1.分布式重播管理工具:
一个控制台应用程序 DReplay.exe, 可用来与分布式重播控制器进行通信。使用管理工具可控制分布式的重播。
2.分布式重播控制器:
运行名为SQL Server 分布式重播控制器的 Windows 服务的一台计算机。分布式重播控制器协调分布式的重播客户端的操作。在每个分布式重播环境中只能有一个控制器实例。
3.分布式重播客户端:
运行名为SQL Server 分布式重播客户端的 Windows 服务的一台或多台计算机(物理或虚拟)。分布式重播客户端协同工作以针对 SQL Server 实例模拟工作负载。每个分布式重播环境中可以有一个或多个客户端。
4.目标服务器:
分布式重播客户端可用于重播跟踪数据的 SQL Server 实例。建议将目标服务器置于测试环境中。
分布式重播管理工具、控制器和客户端可安装在不同计算机或同一计算机上。一台计算机上只能运行分布式重播控制器或客户端服务的一个实例。
下图展示了 SQL Server 分布式重播物理体系结构:
三.分布式重播的配置
3.1 服务器情况
根据图2-1,我们需要有3台服务器来模拟,一台做控制器,一台做客户端,一台做目标服务器。
控制器所在服务器要求具有安装下列组件:
·分布式重播客户端
·分布式重播控制器
·管理工具
·SQL Server 2008 R2数据库引擎服务
目标服务器要求有SQL Server 2012数据库引擎服务的安装。
当然我们也可以用一台机器来把控制器和客户端放在一起。
3.2 服务账号
首先我们需要给分布式重播控制器服务相关服务添加用户账号。
1.在控制器计算机上,停止 SQL Server 分布式重播控制器服务。
2.在“服务”下,右键单击“SQL Server 分布式重播控制器”,然后选择“属性”。
3.在“SQL Server 分布式重播控制器属性”窗口中的“登录”选项卡上,选择“本帐户”,键入或单击“浏览”以输入新的登录帐户,然后单击“确定”。
重要:在您配置分布式重播控制器时,可以指定将用于运行分布式重播客户端服务的一个或多个帐户。 下面是支持的帐户的列表:
·域用户帐户
·用户创建的本地用户帐户
·管理员
·虚拟帐户和 MSA(托管服务帐户)
·Network Services、Loca·Services 和 System
不接受组帐户(本地或域)和其他内置帐户(如 Everyone)。
4.启动分布式重播控制器服务。
关于分布式重播客户端服务
1.在修改分布式重播客户端服务之前,请确保在安装期间指定了您要更改的客户端服务帐户(在控制器计算机上的 CTLRUSERS 参数中)。 如果在安装期间未指定要更改的客户端服务帐户,必须先执行以下步骤:
1) 停止 SQL Server 分布式重播控制器服务。
2) 在安装有控制器服务的控制器计算机上,在命令提示符下键入 dcomcnfg。
3) 在“组件服务”窗口中,导航到控制台根节点->“组件服务”->“计算机”->“我的电脑”->“DCOM Dconfig”->“DReplayController”。
4) 右键单击“DReplayController”,然后单击“属性”。
5) 在“DReplayController 属性”窗口中的“安全”选项卡上,单击“启动和激活权限”部分的“编辑”。
6) 为新的客户端服务登录帐户授予“本地和远程激活”权限,然后单击“确定”。
7) 单击“访问权限”部分的“编辑”,并为新的客户端服务登录帐户授予“本地和远程访问”权限,然后单击“确定”。
8) 单击“确定”以关闭“DReplayController 属性”窗口。
9) 在控制器计算机上,将更改后的客户端服务登录帐户添加到“分布式 COM 用户”组中。
10) 启动 SQL Server 分布式重播控制器服务。
2.停止 SQL Server 分布式重播客户端服务。
3.在“SQL Server 分布式重播客户端属性”窗口中的“登录”选项卡上,选择“本帐户”,键入或单击“浏览”以输入新的登录帐户,然后单击“确定”。
4.启动分布式重播客户端服务。
3.3 防火墙配置
因为多台服务器之间,涉及到了防火墙的问题,我们需要进行相关的设置。
1.打开window防火墙,点击高级设置:
2.单击“入站规则” - 右键单击??并选择新建规则。
规则类型:选择程序,然后单击“下一步”
程序:选择“此程序路径”,浏览“C:\Program Files (x86)\Microsoft SQL Server\110\Tools\DReplayClient\DReplayClient.exe”,点击“下一步”。
这个路径以安装路径为主,例如我安装在了D盘。
在操作中,选择“允许连接”,点击“下一步”。
在配置文件中:让所有选择,如域名,私人和公共的(通常是域应该是不够的),点击下一步。
名称:键入“Allow Distributed Replay Client”,然后单击“完成。
关于控制器和客户端都要如此设置一下,设置后如图3-11.
3.4 所有配置的检测
检测账号是否正常:
重启服务,账号不正常,启不来,如图3-12。
正常应该是如图3-13:
下面我们检测一下客户端是否能够连接到控制器。
我们查看安装目录中的如下log文件夹:
打开日志文件,我们可以看到:
出现无法连接控制器,错误代码表示没有权限访问。
我们需要确实控制器和客户端在同一个域内,防火墙配置好,账号权限正常即可。
如果是同一台机器上,本地账号,还是提示无法连接控制器,一般是账号权限的问题,我们可以再仔细配置检查如下过程:
1.开始 ->运行,键入dcomcnfg组件服务将被打开。
2.查找DReplayController(控制台根目录->组件服务->计算机->我的电脑->DCOM配置->DReplayController)
3.打开的属性DReplayController,然后选择“安全”选项卡
4.编辑“启动和激活权限”,并授予“sqlservice”域用户帐户“本地激活”和“远程激活”权限。
5.编辑“访问权限”,并授予“sqlservice”域用户帐户“本地连接”和“远程访问”。
6.添加“sqlservice”,“分布式COM Users”组中的域用户帐户内。
成功后应该是在日志中看到如图3-16.
在3-16中,我们还可以看到working directory 和 result directory。
四.分布式重播的使用
我们在配置完毕后,我们可以使用分布式的的重播环境创建的SQL Server上的负荷。该怎么样来使用分布式重播的功能呢?
4.1从源服务器的数据收集
我们需要收集一些数据,主要生产服务器,那么我们就可以使用所收集的数据来创建新的SQL Server的负载。
1.首先,我们在控制器所在服务器上,创建一个文件夹,例如D:\mTest。
2.打开SQL Server 2012的事件探查器。
3.选择“文件”->“新建跟踪 ->连接到控制器所在服务器。
4.选择使用模版下面中的TSQ·–replay。
5.保存文件到指定文件夹。
6.运行跟踪,我们可以看到:
现在,跟踪从源服务器已准备就绪。
4.2 预处理源跟踪文件
源跟踪文件将被用于准备文件所使用的分布式客户端创建新的SQL Server上的负载。运行下面的命令准备的文件为分布式客户端使用命令提示符上的控制器的。
D:\mTest>dreplay preprocess –i “d:\mTest\ControlServer_SQL_Trace.trc” –d “D:\mPreProcess”
运行后效果如图4-3
上面的截图显示发生错误。最重要的部分是“控制台用户有适当的权限来访问控制器服务”,修改DReplayController组件的启动和激活权限和访问权限,然后重启相关服务。
重启服务后,再次运行如图4-5,表示成功。
关于DReplay.exe的详细参数:
http://msdn.microsoft.com/zh-cn/library/ff878442.aspx
五.分布式重播的优点
与SQL Server事件探查器类似,您可以使用分布式重播针对升级后的测试环境重播捕获的跟踪。与 SQL Server 事件探查器不同的是,分布式重播并不仅限于从单台计算机重播工作负荷。与SQL Server事件探查器相比,分布式重播提供了一个更具伸缩性的解决方案。使用分布式重播,您可以从多台计算机重播工作负荷,并更好地模拟关键任务型工作负荷。
Microsoft SQL Server 分布式重播功能可以从多台计算机重播跟踪数据,并模拟关键任务型工作负荷。可使用分布式重播进行应用程序兼容性测试、性能测试或容量规划。
本文主要是参考官方文档和部分博客,结合个人实践而来,如有错误,望指正。
主要参考文档及扩展阅读:
·使用分布式重播对您的 SQL Server 进行负载测试 – 第 1 部分
·使用分布式重播对您的 SQL Server 进行负载测试 – 第 2 部分
更多精彩尽在2013年4月18~4月20日第四届中国数据库技术大会,北京永泰福朋喜来登酒店。
3月31日之前购票享8折优惠。