SQLServer2008数据库镜像部署实例之三配置见证服务器
前面已经完成了镜像数据库的配置,并进行那个了故障转移测试。接下来将部署见证服务器,实现自动故障转移。
一、关于见证服务器
1、若要支持自动故障转移,必须在高安全性模式下配置数据库镜像会话,并且还要具有第三个服务器实例(也称为“见证服务器”)。见证服务器是SQLServer的可选实例,它能使高安全性模式会话中的镜像服务器识别出是否要启动自动故障转移。与这两个伙伴不同的是,见证服务器并不能用于数据库。见证服务器的唯一角色是支持自动故障转移。
2、为了给数据库设置见证服务器,数据库所有者为见证服务器的角色分配数据库引擎实例。见证服务器实例可以与主体服务器实例或镜像服务器实例运行于同一台计算机上,但这样会明显降低自动故障转移的可靠性。因此建议见证服务器应位于另外一台计算机上。
3、在高性能模式下,见证服务器对可用性会有不利影响。如果见证服务器是针对数据库镜像会话而配置,则主体服务器必须至少连接到一个其他服务器实例,即镜像服务器或见证服务器,或者是连接到这两个服务器。否则,将无法使用数据库,并且不能进行强制服务(可能丢失数据)。因此,对于高性能模式,我们极力建议您始终将见证服务器设置为OFF。
二、关于自动故障转移
1、只有在高安全性模式(“具有自动故障转移功能的高安全性模式”)下运行并且具有见证服务器的数据库镜像会话支持自动故障转移。在具有自动故障转移功能的高安全性模式下,同步数据库后,如果主体数据库变得不可用,则会发生自动故障转移。自动故障转移将导致镜像服务器接管主体服务器的角色,并使其数据库的副本联机以作为主体数据库。因为每个在主体数据库中提交的事务同时也在镜像数据库中提交,所以需要使数据库保持同步以防止在故障转移过程中丢失数据。
2、自动故障转移所需条件
A、数据库镜像会话必须在高安全性模式下运行,并且必须处理见证服务器。
B、镜像数据库必须已经同步。这将保证发送到镜像服务器的所有日志都已写入磁盘。
C、主体服务器已中断了与其余数据库镜像配置的通信,而镜像服务器和见证服务器将保留仲裁。但是,如果所有服务器实例都已中断通信,而见证服务器和镜像服务器稍后重新建立通信,则不会发生自动故障转移。
D、镜像服务器已检测到丢失了主体服务器
E、镜像服务器检测主体服务器故障的方式取决于故障是硬故障还是软故障。
更多自动故障转移内容参考
http://msdn.microsoft.com/zh-cn/library/ms189590.aspx
三、自动故障转移原理
1、如果主体服务器仍在运行中,则将主体数据库的状态更改为DISCONNECTED并断开所有客户端与主体数据库的连接。
2、见证服务器和镜像服务器将主体服务器注册为不可用。
3、如果重做队列中有任何等待的日志,则镜像服务器将完成前滚镜像数据库的操作
4、前一个镜像数据库作为新的联机主体数据库,恢复通过尽快回滚未提交的事务将这些事务全部清除。锁将隔离这些事务。
5、当前一个主体服务器重新联接到会话时,它将认定其故障转移伙伴现在拥有主体角色。前一个主体服务器接管镜像角色,并将其数据库作为镜像数据库。新的镜像服务器会尽快将新的镜像数据库与主体数据库同步。新的镜像服务器重新同步数据库后,就可以再次执行故障转移,但按反向执行。。
下图说明了自动故障转移的一个实例。
3、点击下一步,选择包括见证服务器
4、点击下一步,进行见证服务器配置
5、点击两次下一步,填入见证服务器地址或机器名及站点名称
6、填入服务账户
7、查看摘要信息,点击完成
六、测试自动故障转移
1、当前主体服务器为Hytest01,镜像数据库是Hytest02
2、将主体服务器Hytest1的网络断开,看数据库是否自动转移到镜像服务器Hytest02上
镜像设置显示,主体服务器、镜像服务器角色也互换了。
有人会说,两个数据库,IP地址都不一样,怎么写连接代码呢?难道出现故障后要手动更改代码吗?其实使用ADO.NET或者SQLNativeClient能够自动连接到故障转移后的伙伴,连接字符串如下所示:
ConnectionString="DataSource=A;FailoverPartner=B;InitialCatalog=AdventureWorks;IntegratedSecurity=true;"DataSource=A;
这样设置之后,客户端就可以自动切换数据库了
至此SQLServer2008的镜像高可用配置实例全部完成。
相关文章
- iOS小技能: static、extern 存储类的应用(创建共享实例、申明公共方法、全局字符串常量)
- Maven聚合开发【实例详解---5555字】
- SQLServer 错误 17130 没有足够的内存分配给所配置的锁数。 正尝试以较小的锁哈希表启动,但这可能会影响性能。 请与数据库管理员联系,为数据库引擎的这一实例配置更多内存。 故障 处理 修复 支持远程
- mysql触发器使用实例详解数据库
- Java经典实例:处理单个字符串详解编程语言
- 管理MySQL实例:掌握数据库和表管理技巧(mysql实例库表)
- MySQL实践:学习C语言语法(c使用mysql实例)
- Oracle数据库实例深度剖析(oracle数据库和实例)
- 数据库深入浅出 Oracle 多实例数据库(oracle多实例)
- 查看MySQL数据库表结构:一个实例(显示mysql表结构)
- 修改Oracle数据库实例SID的方法(修改oraclesid)
- Linux防火墙iptables学习笔记(五)linux+iptables构筑防火墙实例
- Java应用示例:使用Neo4j图数据库(neo4jjava实例)
- 深入探索Oracle实例与数据库的结合运用(oracle实例与数据库)
- 2005年mysql数据库连接实例(2005链接mysql)
- Oracle主键与外键语句操作实例(oracle主键外键语句)
- 的优势Oracle数据库中多实例部署的优势(oracle中多个实例)
- 筛选Oracle数据库中实现任意字符筛选实例分析(oracle中任意字符)
- linux下指定mysql数据库服务器主从同步的配置实例
- JQuery动画和停止动画实例代码
- Android使用SQLite数据库的简单实例
- mysql存储过程实例
- ThinkPHP实现ajax仿官网搜索功能实例
- C++实现位图排序实例