在实际CITRIX平台中,不论是XenDesktop、XenApp,我们都知道会一个Data Store 的角色,而此角色后台数据库可是小型Access数据库,也可以是MSDE或是SQL的其他版本,当然也可以是Oracel\DB2。而在很多环境中SQL Server 是用的最多的。而以前的SQL Server 2000,如果要实现高可用(HA),我们只能创建Cluster模式,而Cluster在搭建过程中有比较多的局限性。如:
1、必须要有共享数据存储
2、必须是在同一子网、局域网中,不可跨WAN.
3、数据存储依然存在单点故障

而至从SQL Server 2005 SP1发布后,另一个“数据库镜像”概念引入,使其更加的提高了灵活性及可用性。
数据库镜像工作过程:就是把SQL事务日志传输复制的过程(一份事务日志在两个SQL 实例中各进行写入到数据文件.MDF),在微软的说话是“预写事务日志”机制。其目的就是为了提高性能与可恢复性(如:事务日志回滚),而在微软的其他产品此套工作机制还应用在DHCP、DNS、AD、Exchange的数据库当中。

而今天所共享的是一套微软推荐的最高级别的SQL Server高可用方法:
拓扑如下:
 

 
 

节点说明:
A:双节点Cluster(SQL实例名:Sqlserver02)(主体服务器群集,包括Citrix-05;Citrix-06)
B:双节点Cluster(SQL实例名:SqlServer3)(镜像服务器群集, 包括Citrix-03;Citrix-04)
C:双节点Cluster(SQL实例名:SqlCluster)(见证服务器群集,包括Citrix-01;Citrix-02)
 

 
总共6台服务器。

 

 前提条件:

Windows Server 2003 Enterprise Edition
SQL Server 2005 Enterprise/Standard Edition SP1以上或更高版本。
Active Directory(域环境)
双网卡(Pubic\Private)
共享存储(两块磁盘以上:仲裁盘、数据盘)
Windows Server Cluster
注:如果SQL Server 2005 未安装SP1 以上补丁,在创建镜像数据时会报以下错误信息:

基本的双节点Windows Cluster 与SQL Cluster真的太简单,且网上的文档也太多。在此,不作过多介绍。以下步骤均是在已创建好SQL Cluster前提下实现镜像数据库方法,其实与3节点的镜像数据库配置方法一样。
setp1:
在主体群集创建Database

创建一个需要Mirorring 的数据库。

数据库名为"Test_mirorr2"

设备恢复模式为(完整)

 
备份刚刚创建的数据库,当然,你也可以在备份前,前创建一个备份设备(推荐做法)
 

在此,我选择为备份到磁盘。

 

 
备份完成。
 

 

在镜像服务器群集中还原Database
把备份数据库文件复制到镜像服务器上。
注意:备份数据库文件需要复制到对应SQL Cluster公用存储中,否则将会找不到所备份文件。

 
选择“还原数据库”
 

 
源设备来自文件(添加),刚刚复制过来的备份文件。


注意:此处一定要选择"NORECOVERY",这就是我刚刚提到的预写日志的功能。

 
恢复成功,但此时数据是不能被访问的,因为我选择的是NORECOVERY,就是说此数据库还可以还原其他时间点的事务日志。功能很强大。
 

 
恢复后的数据库应为“正在还原”状态,说明是正常的。
 

配置数据库Mirorring

切换到主体Cluster数据库:

 


点击“配置安全性”
 

 
选择主体服务器名(SQL Cluster名称)

 
选择镜像服务器名(SQL Cluster名称)

选择见证服务器名(SQL Cluster名称)

 
输入服务账户
 

点击“开始镜像”此时,镜像服务开始工作。

 

此时,你会发现刚刚数据库,现显示为已同步。

回到镜像服务器上查看时:
 

 

测试功能:
在主体服务器上创建新表A、B:

再模拟主体服务器故障:
 


镜像服务器正在转移......

镜像服务器已完成转移状态。
 

查看镜像服务器刚刚在主体服务器上创建的表A\B:
 

创建的表都已成功复制过来。
以上操作,如果熟悉T-SQL语句,均可实现。
以上为整个配置过程。相信有此坚固的DATA STORE做后端,能给整个CITRIX环境起到更为高的可用性及可靠性。