SQL Server 2005相对于SQL Server 2000来说,无论是性能还是功能都有一个相当大的提高,甚至可以用“革命”来形容这一次升级。SQL Server 2005使 SQL Server 跻身于企业级数据库行列。在数据高可用性方面,SQL Server 2005为用户提供了数据镜像、复制、故障转移群集、日志传送功能。本文向读者简单介结SQL Server 2005镜像功能。

  一、镜像简介

  数据库镜像是一个高可用性软件解决方案,为客户端提供小于10秒故障转移。每个数据库镜像配置均包含一个主体服务器(包含主体数据库)、一个镜像服务器(包含镜像数据库)和一个见证服务器,其中见证服务器是可选的。主体服务器和镜像服务器要求是独立的服务器实例。主体服务器和镜像服务器的角色是相对的,可以自动或者手动地将主体服务器设置为镜像服务器,镜像服务器设置为主体服务器。与主体服务器和镜像服务器不同的是,见证服务器并不能用于数据库。见证服务器监视主体服务器和镜像服务器,确保在给定的时间内这两个故障转移服务器中有且只有一个作为主体服务器,从而支持自动故障转移。如果存在见证服务器,同步会话将以“高可用性模式”运行,如果主体服务器出现故障,可以实现故障自动转移。如果见证服务器不存在,同步会话将以“高级别保护模式”运行,出现故障需要手动故障转移,并且有可能丢失数据。

mysql镜像创建数据库 什么是数据库镜像_数据库


图1:两台服务器镜像

mysql镜像创建数据库 什么是数据库镜像_sql server_02


图2:两台服务器镜像,一台见证服务器

数据库准备结束,端点创建完成,用户便可以启用数据库镜像。镜像启动后,每个伙伴都将开始维护所在数据库中有关其数据库,以及另一个伙伴和见证服务器的状态信息。这些状态信息允许服务器实例维护称为“数据库镜像会话”的当前关系。在数据库镜像会话过程中,服务器实例将通过彼此定期交换 PING 消息来互相监视。

  镜像会话启动后,镜像服务器将识别镜像数据库上最新完成的事务的日志序列号 (LSN),并要求主体服务器提供所有后续事务的事务日志,主体服务器向像镜像服务器发生一份当前活动的事务日志,镜像服务器会立即将传入日志镜像到磁盘。主体服务器继续让客户端连接使用主体数据库,每次客户端更新主体数据库时,主体服务器都会在写入到日志时,并将得到的事务日志发送给镜像服务器,镜像服务器会将其镜像到磁盘。同时,镜像服务器将从最早的事务日志开始,将事务应用到镜像数据库中,从而实现主体数据库和镜像数据库同步。

  二、配置实例

  了解数据库镜像的基本知识之后,看一看怎样去配置镜像。(使用镜像功能请确保安装了SQL Server 2005 SP1)。

  笔者为做镜像实验,在同一个服务器上同时装三个实例: SERVER01、SERVER02、SERVER03。其中,SERVER01将作为主体服务器、SERVER02作为镜像服务器、 SERVER03作为见证服务器。

  在完成本实验的第一步需要将主体服务器的DBMirror数据库,完全备份出来,然后在SERVER02上还原,在还原的时候注意使用NORECOVERY,使用镜像数据处于还原状态。在备份之前请将DBMirror数据库的日志模式设置为完整。

  完成了上面的准备之后就可以设置镜像。

  第一步:创建端点。

  在SERVER01上运行下面的SQL:

 

CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5011)
FOR DATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=SUPPORTED)
go

在SERVER02上运行下面的SQL:

CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5022)
FOR DATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=SUPPORTED)
go

在SERVER03上执行下面的SQL,创建见证服务器。

CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5033)
FOR DATABASE_MIRRORING(ROLE=WITNESS,ENCRYPTION=SUPPORTED)
go

 

  第二步:启动镜像

  在前面的规划中SERVER01将作为主体服务器、SERVER02作为镜像服务器,首先在主体服务器上执行下面的SQL:

 

ALTER DATABASE DBMirror
SET PARTNER='TCP://jeffery:5022'    --(注:笔记的机器名称是jeffery)
go

 

  指定SERVER01的通讯伙伴是SERVER02(因为前面定义端点的时候SERVER02的端口号为5022)。

在SERVER02的上执行下面的SQL,指定通讯伙伴为SERVER01。

 

ALTER DATABASE DBMirror
SET PARTNER='TCP://jeffery:5011'
go

 

  回到主体服务器,指定见证服务器。在SERVER01上执行下面的SQL:

 

ALTER DATABASE DBMirror
SET WITNESS='TCP://jeffery:5033'
go

 

  完成以上步骤之后,镜像配置完成。如图3所示。

mysql镜像创建数据库 什么是数据库镜像_server_03


图3

三、管理镜像

  1、 相关系统视图

  sys.database_mirroring:此视图显示服务器实例中每个镜像数据库的数据库镜像元数据。实例 SQL Server 中的每个数据库在表中占一行。如果数据库未联机,或未启用数据库镜像,则除 database_id 以外的所有列的值都将为 NULL。

  sys.database_mirroring_endpoints:目录视图显示有关服务器实例的数据库镜像端点的信息。

  sys.dm_db_mirroring_connections:为每个数据库镜像网络连接返回一行。

  2、 手动主体、镜像服务器之间的切换

  在主体服务器中执行下面的代码就可以将镜像服务器设为主体服务器,主体服务器设置为镜像服务器。

 

USE MASTER
GoALTER DATABASE DBMirror SET PARTNER FAILOVER
Go

 

  数据库镜像是一个很好的高可用性解决方案,笔者参加微软的技术论坛时曾看到过微软的技术人员演示镜像的故障转移,如主体服务器出现故障,在10秒内客户端就重新连到数据库服务器。限于篇幅和笔者的水平,对数据库镜像作了简单的介绍,还有很多东西没有提及到比如说客户端怎样连到服务器等等,希望本文成为读者学习镜像功能的开端。

过程简单把,问题也一大堆把

1,在端点配置中禁用了数据库镜像传输功能。默认情况下,数据库镜像是禁用的。但是,只需使用跟踪标志 1400 作为启动参数,您就可以出于评估目的而启用数据库镜像。不应该在生产环境中使用数据库镜像。Microsoft 产品支持服务不支持使用数据库镜像的数据库或应用程序。SQL Server 2005 中包含的数据库镜像文档仅用于评估目的。此外,SQL Server 2005 支持和升级的文档策略不适用于数据库镜像文档。

解决办法:

1)启动镜象
       DBCC TRACEON (1400, -1)
2)装SQL Server 2005 SP1

2,完全限定名

    要在域中吗?回答是不需要,真是个NND的功能

   右击-〉我的电脑-〉属性-〉计算机名-〉更改-〉其他 -〉在此计算机的主DNS后缀 里面 随便输入一个 www什么的,这样的完全限定名就是 计算机名.www

3,本机多实例和多台服务器的区别 (2010-08-10 补充 发现有人引用我的这篇,还没有配置成功)

     1)本机多实例:一般我们会先在自己的机器上装3个实例分为主,见证,镜像。按照上面的配置绝对没有问题,如果有问题,我估计你要多试几次。

      2)多台服务器:实际的部署中我们可能是多台服务器,假设3台分为主、见证、镜像。这里有个特别要注意的,如果你一直配置不成功就必须要注意,其实是3台服务器的SQL SERVER服务器通信时权限不够,那么需要修改服务运行的账户,并却确保3台服务器上有一个相同用户名和密码的账户,然后3台服务器的SQL SERVER服务都是用这个账户,我用的是Administrator(3台服务器的密码都一样),下图是我用SQL Server 2008截的,我想你应该知道在哪里改了

mysql镜像创建数据库 什么是数据库镜像_sql server_04

祝你配置成功