SQL Server 2008 R2数据库镜像部署 数据库
概述安全
“数据库镜像”是一种针对数据库高可用性的基于软件的解决方案。其维护着一个数据库的两个相同的副本,这两个副本分别放置在不一样的SQL Server数据库实例中。建议使用不一样位置的两台服务器来承载。在同一时刻,其中一台上的数据库用于客户端访问,充当“主体服务器”角色;而另外一台则根据镜像会话的配置和状态,充当热备份服务器,即“镜像服务器角色”,这两种角色不是绝对的。服务器
优势网络
加强了数据保护功能异步
提升了数据库的可用性性能
提升了生产数据库在升级期间的可用性测试
工做方式.net
在“数据库镜像会话”中,主体服务器和镜像服务器是相互通讯和协做,并双方互补。主体服务器角色上的数据库副本为生产数据库。数据库镜像会尽快将主体数据库中执行的每一项操做(如:插入、更新和删除等)在镜像数据库中进行从新执行。这一过程是经过将活动事务日志记录的流发送到镜像服务器来完成,这能够尽快将日志记录按顺序应用到镜像数据库中。并且数据库镜像是在物理日志记录级别执行这一“重作”操做的。SQL Server 2008 R2(如下简称:SQL08R2)中,为了减小网络的负载,主体服务器会将事务日志记录压缩后进行发送。设计
运行模式3d
高性能模式(异步运行):事务不须要等待镜像服务器将日志写入磁盘即可提交,这样可最大程度地提升性能。这意味着事务不须要等待镜像服务器将日志写入磁盘即可提交,而此操做容许主体服务器在事务滞后时间最小的条件下运行,但可能会丢失某些数据。
高安全模式(同步运行):当会话开始时,镜像服务器使镜像数据库尽快与主体数据库同步。一旦同步了数据库,事务将在双方提交,这会延长事务滞后时间。
图1
具备故障转移功能的高安全性模式(见证服务器):这种模式最大的优势就是主体服务器断线时,镜像服务器上的数据库副本会自动启用,做为生产数据库为客户端提供服务。在这一结构中见证服务器并不能用于数据库,其主要做用是经过验证主体服务器是否已启用并运行来支持自动故障转移。
注意:只有在与主体服务器断开链接以后,镜像服务器仍和见证服务器保持相互链接时,镜像服务器才启动自动故障转移。
见证服务器的做用是验证指定的伙伴服务器是否已启动并正常运行。若是镜像服务器与主体服务器断开,但见证服务器仍与主体服务器保持链接,则镜像服务器没法启动故障转移。因此要实现故障转移的条件是主体服务器与镜像服务器断线,同时也与见证服务器断线;镜像服务器与见证服务器连线的状况。
图2
角色切换
自动切换:在使用见证服务器的状况下,数据库必须已经同步,而且见证服务器必须和镜像服务器链接正常。
手动切换:在高安全性模式下,主体服务器和镜像服务器必须保持互联,而且数据库必须已经同步。
强制服务:在高性能模式和不带自动故障转移功能的高安全性模式下,若是主体服务器出现故障而镜像服务器可用,则能够强制服务运行。这种方式可能致使某些数据库丢失。
实现
1、条件
SQL08R2的“数据库镜像”必须基于每一个使用完整恢复模式的数据库来实现。对于SQL08R2不支持简单恢复模式和大容量日志恢复模式的数据库镜像。另外,不能镜像“master”、“msdb”、“model”和“tempdb”等系统数据库。
2、环境
测试环境为一个LAN内,IP地址是192.168.0.0/24段,域名是punwar.cn。
DC:192.168.0.110/24——域控制器和DNS服务器;
SQL-1:192.168.0.111/24——SQL08R2主体服务器;
SQL-1:192.168.0.112/24——SQL08R2镜像服务器;
SQL-1:192.168.0.113/24——SQL08R2见证服务器。
拓扑(如图3)所示:
图3
3、基本环境的准备
因为系统平台使用WIN08R2,并且启用了防火墙设置,所以为了SQL08R2可以正常工做,须要在防火墙上打开相应的端口。本文中介绍数据库镜像须要打开的端口是TCP-1433和TCP-5022端口。打开方式很是多,可是此处能够结合基于域的组策略为三台SQL08R2服务器同时进行总体配置。
将三台服务器放置在同一个OU中(如图4)
图4
经过DC的组策略管理器,为其OU单首创建一个GPO,并定位其“计算机配置”——“管理模板”——“网络/网络链接/Windows防火墙/域配置文件”,启用“定义入站端口例外”(如图5),分别定义两条:
1433:TCP:192.168.0.0/24:enabled:SQL Server
5022:TCP:192.168.0.0/24:enabled:SQL Server DBM
图5
此外,对于SQL08R2来说,默认状况下,SQL服务的TCP/IP访问是禁用的,因此须要经过SQL Server Configuration Manager将其启用(如图6)。
图6
4、准备数据库
在登陆将做为主体服务器的SQL-1服务器(如图7),定位须要镜像的数据库(本文中是mydb数据库),右击选择其“属性”(如图8)。
图7
图8
在其属性窗口中,选择“选项”页,确认其恢复模式为“完整”(如图9)。
图9
关闭该窗口,而后对该数据进行完整备份和事务日志备份。选择mydb数据库节点,右击选择任务——备份
(如图10)。
在备份窗口中选择备份类型为“完整”,并指定目标备份包的路径(如图11),点击“肯定”进行备份。
相同步骤,打开备份窗口,选择备份类型为“完整”,并指定目标备份包的路径(如图12),点击“肯定”进行备份。这里为了方即可以选择与完整备份相同的备份包。图12
将备份包复制到镜像服务器SQL-2上(如图13),而且从SQL管理控制台登陆到SQL-2(如图14)。
图13
图14
建立与主体服务器上须要镜像的数据库相同名称的数据库——mydb(如图15)。同时,数据库文件放置的位置应该相同,各属性也应该配置相同。
图15
在SQL-2上对新建的数据库进行还原操做,即将从SQL-1上对数据库的备份针对SQL-2上新建的mydb进行还原操做。右击mydb数据库选择任务——还原——数据库(如图16)打开还原数据库窗口。
图16
选择“原设备”,经过浏览添加从SQL-1复制的备份包(如图17)。
图17
再选择页中选择“选项”,勾选“覆盖现有数据库”,同时选择“不对数据库执行任何操做,不回滚未提交的事务。能够还原其余事务日志。(RESTORE WITH NORECOVERY)”(如图18)。
图18
点击“肯定”,完成数据库还原操做(如图19)
图19
5、配置主体/镜像服务器
在SQL-1上,右击mydb,选择任务——镜像(如图20),打开镜像数据库配置窗口,点击“配置安全性”按钮(如图21)。
图20
图21
在“包括见证服务器”页中选择“是”(如图22),这样能够在以后实现自动故障转移。单击下一步。
图22
在“选择要配置的服务器”页面中,能够不勾选“见证服务器实例”(如图23),由于见证服务器能够在以后来进行配置。
图23
点击下一步,指定主体服务器监听端口和端点名称(如图24),默认的端口为TCP-5022端口,端点名称自定义。
图24
单击下一步,指定镜像服务器,在下拉菜单中选择“浏览更多”(如图25),在“链接到服务器”对话框中指定登陆到SQL-2(如图26)。
图25
图26
仍然须要指定镜像服务器的侦听器端口和端点名称,这里的端口仍然使用默认的TCP-5022(如图27)。
图27
单击下一步,指定服务器实例的服务帐户,在此测试环境中统一使用管理员帐户,可是在生产环境中建议专门为其建立一个帐户(如图28)。
图28
单击下一步,显示摘要,确认无误,点击“完成”(如图29)进行端点配置。
图29
成功完成配置后,系统提示是否马上进行“开始镜像”(如图30),单击开始镜像。
图30
完成数据库同步后,镜像状态会显示为“已同步:数据库已彻底同步”(如图31)。由此,主体服务器和镜像服务器的部署已经完成。
图31
注:在最后一个步骤中,进行镜像同步时,须要在每一台SQL08R2服务器上启用“Remote DAC”,不然可能会收到错误提示(如图32)
图32
在SQL08R2中启用远程管理员链接的方法以下:
右击服务器节点,选择“方面”(如图33)
图33
打开“查看方面”窗口,在“方面”下拉菜单中选择“外围应用配置器”(如图34),指定“方面属性”的“RemoteDacEnabled”值为“True”(如图35)。
图34
图35
6、实现手动故障转移
首先,肯定目前主体服务器和镜像服务器工做均正常,而且链接正常。目前在SQL-1上,mydb的状态是“主体,已同步”(如图36)
图36
在SQL-1上打开mydb的“镜像”配置窗口,确认运行模式为“高安全”模式,而后点击“故障转移”按钮(如图37)。系统提示是否进行转移(如图38),单击“是”进行转移。
图37
图38
成功完成操做后,在SQL-1上数据库mydb的状态变为了“镜像,已同步/正在还原……”(如图39);
图39
而在SQL-2上,mydb的状态变为“主体,已同步”了(如图40)。因而可知进行故障转移的结果是使其主体/镜像角色互换了。
图40
7、实现自动故障转移
自动故障转移须要配置见证服务器,因为此前在实现主体/镜像服务器的过程当中,略过了见证服务器的配置,因此,如今须要手动从新配置见证服务器。
在主体服务器SQL-1上,右击数据库mydb,选择任务——镜像(如图41),打开“镜像”配置窗口,选择“配置安全性”按钮(如图42)
图41
图42
将安全性配置为包括见证服务器实例(如图43)
图43
单击下一步,勾选“见证服务器实例”(如图44)。
图44
单击下一步,确认主体服务器配置(如图45),
单击下一步,配置见证服务器,在下拉菜单中选择“浏览更多”(如图46)。链接并登陆到SQL-3(如图47)
图46
图47
指定“侦听器端口”为默认的TCP-502和端点名称(如图48)
图48
单击下一步,指定域管理员做为主体/镜像/见证的服务帐户(如图49)
图49
单击下一步,确认摘要信息无误,点击“完成”(如图50)。
图50
成功完成配置后,在“镜像”配置窗口中会显示“见证服务器”信息,并自动选中“带自动故障转移功能的高安全(同步)”(如图51)。
图51
注:此时“不带自动故障转移功能的高安全(同步)”将不可以使用
断开SQL-1的网络链接,模拟主体服务器,即生产数据库服务器出现故障。如:拔去SQL-1的网线。SQL-1上的mydb状态将自动变为“主体,已断开链接/正在恢复”(如图52)
图52
而此时,在SQL-2上查看mydb状态将自动变为“主体,已断开链接”(如图53)。
图53
8、验证镜像数据库的数据同步。
在各角色都正常工做的状况下,定位到主体服务器SQL-1上mydb数据库,建立表t1。并在其中插入数据(如图54)。
图54
完成建表和插入数据后,拔掉SQL-1的网线,模拟故障。而后,登陆镜像服务器SQL-2,定位到mydb数据库,展开能够看到镜像同步过来的t1表,打开表能够看到表中的数据也是同步过来的(如图55)。
图55
由此能够看出,“数据库镜像”技术能够成功对数据进行热备,使SQL08R2的可用性得以大大提升。此外,须要注意的是,出现故障后的服务器访问定位须要在SQL语句级别进行设计,在此将再也不进行叙述。