SQL Server 2008 数据库镜像部署实例之三 配置见证服务器

前面已经完成了镜像数据库的配置,并进行那个了故障转移测试。接下来将部署见证服务器,实现自动故障转移。

一、关于见证服务器

1、若要支持自动故障转移,必须在高安全性模式下配置数据库镜像会话,并且还要具有第三个服务器实例(也称为“见证服务器”)。见证服务器是 SQL Server 的可选实例,它能使高安全性模式会话中的镜像服务器识别出是否要启动自动故障转移。与这两个伙伴不同的是,见证服务器并不能用于数据库。见证服务器的唯一角色是支持自动故障转移。

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、当前一个主体服务器重新联接到会话时,它将认定其故障转移伙伴现在拥有主体角色。前一个主体服务器接管镜像角色,并将其数据库作为镜像数据库。新的镜像服务器会尽快将新的镜像数据库与主体数据库同步。新的镜像服务器重新同步数据库后,就可以再次执行故障转移,但按反向执行。。

下图说明了自动故障转移的一个实例。

四、在见证服务器上看装SQL Server 2008

详见《SQL Server 2008 数据库镜像部署实例之一》

五、配置见证服务器

1、主体数据库服务器上,右键点击数据库,选择任务——镜像

2、在弹出的数据库属性页面中,选定镜像页,点击右侧的配置安全

3、点击下一步,选择包括见证服务器

4、点击下一步,进行见证服务器配置

5、点击两次下一步,填入见证服务器地址或机器名及站点名称

6、填入服务账户

7、查看摘要信息,点击完成

六、测试自动故障转移

1、当前主体服务器为Hytest01,镜像数据库是Hytest02

2、将主体服务器Hytest1的网络断开,看数据库是否自动转移到镜像服务器Hytest02上

镜像设置显示,主体服务器、镜像服务器角色也互换了。

有人会说,两个数据库,IP地址都不一样,怎么写连接代码呢?难道出现故障后要手动更改代码吗?其实使用ADO.NET或者SQL Native Client能够自动连接到故障转移后的伙伴,连接字符串如下所示:

  ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;" DataSource= A;

这样设置之后,客户端就可以自动切换数据库了

至此SQL Server 2008 的镜像高可用配置实例全部完成。

SQL Server 2008 数据库镜像部署实例之三 配置见证服务器的更多相关文章

  1. SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移

    SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移 上一篇文章已经为配置镜像数据库做好了准备,接下来就要进入真正的配置阶段 一.在镜像数据库服务器上设置安全性并启动数据 ...

  2. SQL Server 2008 数据库镜像部署实例之一 数据库准备

    SQL Server 2008 数据库镜像部署实例之一 数据库准备 一.目标 利用Sql Server 2008 enterprise X64,建立异步(高性能)镜像数据库,同时建立见证服务器实现自动 ...

  3. 通过SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主 ...

  4. SQL SERVER 基于数据库镜像的主从同步(数据库镜像实践汇总)

    SQL SERVER 基于数据库镜像的主从同步 Author:chaoqun.guo    createtime:2019-03-26 目录 SQL SERVER 基于数据库镜像的主从同步... 1 ...

  5. 【转】通过SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数 ...

  6. 如何转换SQL Server 2008数据库到SQL Server 2005

        背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...

  7. SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原

    sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :htt ...

  8. sql server 2008 数据库管理系统使用SQL语句创建登录用户步骤详解

    介绍了sql server 2008 数据库管理系统使用SQL语句创建登录用户步骤详解 --服务器角色: --固定服务器角色具有一组固定的权限,并且适用于整个服务器范围. 它们专门用于管理 SQL S ...

  9. SQL SERVER 2008数据库各版本功能对比

    微软SQL SERVER 2008数据库有6个版本,分别是数据中心版.企业版.标准版.Web版.工作组版.简易版,有时候购买的时候或需要使用某项功能时,需要了解各个版本的区别,功能差异,很多时候,大部 ...

随机推荐

  1. jQuery 获取checkbox 获取值

    //全选 $("[name='checkbox']").attr("checked",'true'); //取消全选 $("[name='checkb ...

  2. guava--Joiner、Splitter、MapJoinner、MapSplitter

    Joiner: List<String> stringList = new ArrayList<String>(); stringList.add("aa" ...

  3. Java小bug

    1.使用split函数,将字符串按"."分开,写法如下: String str = "a.b.c"; String[] items = str.split(&q ...

  4. iOS开发网络篇—发送json数据给服务器以及多值参数

    iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 ...

  5. iOS开发网络篇—使用ASI框架进行文件下载

    iOS开发网络篇—使用ASI框架进行文件下载 说明:本文介绍iOS网络编程中经常用到的框架ASI,如何使用该框架进行文件的下载. 一.简单介绍 代码示例: #import "YYViewCo ...

  6. AngularJs的UI组件ui-Bootstrap分享(五)——Pager和Pagination

    ui-bootstrap中有两个分页控件,一个是轻量级的Pager,只有上一页和下一页的功能,另一个是功能完整的Pagination,除了上一页和下一页,还可以选择首页和最后页,并且支持多种页数的显示 ...

  7. ubuntu下内核源码树的建立

    参考的博文: http://www.360doc.com/content/12/0604/12/8890849_215794364.shtml http://www.cnblogs.com/pd520 ...

  8. 安卓手机上的python运行环境-qpython

    qpython是一个能让安卓手机运行和编写python的APP,到网上下载APK安装或者在GOOGLE PLAY搜索安装即可. 安装之后你可以你手机跑自己的python程序. qpython有两个大版 ...

  9. Python学习路程day2

    import sys      #接收执行参数 #!/usr/bin/env python import sys print (sys.argv)​ 例: >>>python ind ...

  10. LR手工制作webServices接口类脚本

    首先通过抓包获得某个接口的码流消息,请求报文码分消息头和消息体,所以在制作脚本的时候也需要添加消息头和消息体. POST /jboss-bet/services/&** HTTP/1.1SOA ...