本文接着前面的章节:SQL Server镜像简单介绍 sql
本文出处:http://blog.csdn.net/dba_huangzj/article/details/27203053俗话说:工欲善其事必先利其器。计划好怎样部署和使用镜像,可以下降很是多没必要要的风险。数据库
本文将依照三步骤的形式展现。但是要注意这不是惟一的标准,详细状况详细分析。express
在搭建SQL Server镜像时,必须先了解你所要部署的环境。才干决定镜像的配置项。编程
这不只是镜像配置的前提,也是部署SQL Server甚至搭建数据平台和其它高可用都应该作的事情。如下是一些常见的需要了解的问题:网络
如下详细介绍一下这6点:异步
依据镜像的要求,必须使用SQL Server 2005 SP1以上的版本号,SP1是第一个全然支持镜像功能的版本号。理想状况下。主体server和镜像server所使用的操做系统和sqlserver的版本号尽可能全然一致。对于SQL Server版本号,必须是企业版或者标准版。除此以外,数据库的数据文件和日志文件所在的盘符和文件夹名必须一致,假设不一致,当主体库把事务发送到镜像库时会因为没法识别从而引发报错。ide
假设引入了见证server,可以执行在工做组或者express版本号上。sqlserver
首先需要确保没有文件组使用filestream选项。因为filestream是经过T-SQL操做本地文件,镜像没法在镜像server中读取主体server上的文件。性能
其次,镜像环境要求完整恢复模式。spa
在部署过程当中,最简单的就是使用域帐号。
假设使用一样的服务账号。就不需要在端点中受权。
假设使用本地系统账号执行镜像,必须使用证书受权来替代Windows受权。当使用证书时。需要注意证书的过时时间。和其它最佳实践同样,假设不能使用域帐号,建议使用专用的帐号操做
假设需要作镜像的库很是大,在初始化的过程当中就要考虑到可能的风险。因为通常步骤是先作完整备份,而后传输备份到镜像server而后再还原。而后再在主体数据库上作日志备份再还原到镜像中,这个步骤可能需要好几个小时。
假设此时业务自己就比較繁忙。加上镜像库需要追上主体库的进度,会致使严重的性能问题,最起码网络传输压力会很是大。
针对这样的状况,可以使用log shipping功能进行传输。注意使用NORECOVERY选项而不要用STANDBY选项。在搭建镜像一文中会提到,镜像库需要使用NORECOVERY状态。
理想状况下。镜像server的性能应该接近主体server。因为在Failover的时候可能会短时间接管主体server的所有请求,假设镜像server性能过低,会致使用户响应速度变慢。极端状况下,镜像server可能会在短时间内承受不了原主体server带来的压力直接崩溃。也就是说镜像server可能也会中止响应。这会致使搭建镜像的初衷荡然无存。毕竟搭建镜像主要就是针对这样的状况。
在企业级应用中。很是少仅仅使用单纯的一种高可用技术,可能会使用镜像搭配复制、日志传输甚至集群。
当混合使用的时候,需要更严谨的測试。兴许将会提到。
除了了解镜像环境的硬件部分,也要了解软件部分,也就是执行在这个环境下的应用程序。这些应用中,有些是“黑盒”,特别是第三方软件。对于这方面的内容,需要考虑的有:
假设需要支持镜像。应用程序需要使用SQL Native Client、ADO.NET 2.0 Data Provider或者JDBC 1.1 Driver for SQL Server。并且链接字符串需要使用Failover partner属性。
假设搭建了镜像。而不加入Failover Partner属性,那么就要每次在Failover时手动改动应用程序的链接字符串。这会影响程序的业务持续性。
假设如DTS包、SSIS包或者外部应用使用了不支持镜像的链接协议,需要评估在进行Failover的时候的影响还要制定应对策略。常见的处理手段是把这些组件拷贝到镜像server并配置链接到镜像库中。
镜像是库级的高可用方案,假设应用程序需要使用多个数据库协同执行时。仅对一个库作镜像是不可行的。针对这样的状况。可以把所依赖的所有库都作镜像,并且使用触发器检測镜像状态。仅仅要有一个库的状态知足Failover。就强制把所有库都进行Failover。这需要额外的编程。
假设应用程序依赖本机server的资源,Failover会致使应用程序出现意外,针对这样的状况。可以考虑把外部资源放到共享文件夹上,并用UNC地址訪问。