实战
SQL Server 2005
数据库镜像
SQL Server 2005 是微软
5年来具有里程碑性质的企业级数据库产品。在高可用技术、额外的备份和恢复功能,以及复制增强上的投资使企业能够构建和部署高可用的应用系统。SQL Server 2005在高可用上的创新有:数据镜像,故障转
SQL Server 2005 是微软
5年来具有里程碑性质的企业级数据库产品。在高可用技术、额外的备份和恢复功能,以及复制增强上的投资使企业能够构建和部署高可用的应用系统。SQL Server 2005在高可用上的创新有:数据镜像,故障转移集群,数据库快照和增强的联机操作,这有助于最小化宕机时间和确保企业的关键系统可用。下面我们将介绍数据库镜像技术。
一、数据库镜像
SQL Server 2005 可通过数据库镜像来支持热备功能。数据库镜像允许事务日志以连续的方式从主服务器传递到备份服务器上。当主服务器出现故障时,见证服务器几秒钟内即可检测到主服务器发生了故障,并能立即让备份服务器接受数据库连接。数据库镜像工作在标准服务器硬件下,不需要特定的存储或控制器。图
1显示了数据库镜像的基本配置。
图 1: 数据库镜像的基本配置
二、与传统的集群技术比较
故障转移集群是一个高可用解决方案,它使用
Microsoft Clustering Services 创建容错虚拟服务器,一旦数据库服务器宕机,便可提供快速故障转移。在SQL Server 2005中, SQL Server 分析服务,通知服务,与SQL Server复制现在都已支持故障转移集群。集群节点的最大数量也增加到8个,SQL Server 故障转移集群现已是一个完整的容错服务器解决方案。
从表
1中我们可以看出数据库镜像的优点是故障切换时间短,对服务器要求低,无需存储盘柜,所以服务器之间的距离没有要求,甚至可以把服务器一台放在北京,另一台放在上海。缺点是客户端需要支持ADO.NET 2.0或SQL Native Client,老的应用程序需要升级,需要见证服务器才能实现自动故障转移。
表
1数据库镜像与集群的比较
高可用特性
|
数据库镜像
|
故障转移集群
|
故障转移方式
|
自动、手动
|
自动、手动
|
对吞吐量的影响
|
极小
|
没有影响
|
零工作丢失
|
Yes
|
Yes
|
提供冗余数据
|
Yes
|
No
|
故障转移切换时间
|
小于
10秒
|
30秒以上,视数据量大小
|
硬件要求
|
标准服务器
|
通过集群验证要求的服务器
|
存储要求
|
无
|
共享盘柜
|
服务器距离要求
|
无
|
100米
|
客户端要求
|
支持
ADO.NET和
SQL Native Client
|
无,虚拟
IP
|
三、部署数据库镜像
安装好
3台Windows Server 2003企业版服务器,先加入到域中,名字为NODE1.ftyy.com,NODE2.ftyy.com和NODE3.ftyy.com,然后依次安装SQL Server 2005 Developer Edition、Developer Edition、和SQL Express。
SQL Server 2005对数据库镜像提供支持的版本见表2。
表
2数据库镜像与SQL Server 2005版本
数据库镜像技术
|
Enterprise Edition
|
Developer Edition
|
Standard Edition
|
Workgroup Edition
|
SQL Express(免费)
|
Partner
|
√
|
√
|
√
|
|
|
Witness
|
√
|
√
|
√
|
√
|
√
|
在每台服务器上均使用SQL Server 外围应用配置器,开放允许通过TCP/IP和NAME访问数据库,这是Server SQL 2005增强安全性的措施之一。如图2
图
2
1.在NODE1上创建一个数据库,名字为testdb_01,数据库的恢复模式必须使用完整模式。
create database testdb_01
GO
2.完整备份
testdb_01数据库。
BACKUP DATABASE testdb_01
TO DISK = 'C:\testdb_01.bak'
WITH FORMAT
GO
3.将备份文件拷贝到
NODE2的C盘,恢复备份,数据库名必须和NODE1一致,本例为testdb_01,而且必须使用参数NORECOVERY。
RESTORE DATABASE testdb_01
FROM DISK = 'C:\testdb_01.bak'
WITH NORECOVERY
GO
4.在
NODE1上运行SQL Server Management Studio——鼠标右键testdb_01数据库——在属性里单击镜像选择页。如图3
图
3
单击配置安全性——弹出配置数据库安全向导界面,下一步——包括见证服务器,下一步——在以下服务器上保存安全性配置,下一步——主体服务器实例:
NODE1,端口和端点名称默认,下一步。如图4。
图
4
镜像服务器实例:
NODE2,端口和端点名称默认,下一步——见证服务器实例:NODE3,端口和端点名称默认,下一步——服务账户,下一步——完成。
选择带自动故障转移功能的同步,单击开始镜像。
稍候,镜像成功,在这里可以手动故障转移,测试数据库镜像。如图
5。
图
5
四、客户端连接
我在
Windows XP SP2 .NET Framework 2.0系统上测试了Sybase Powerbuilder 10.2 Build 8100开发工具,ADO.NET 2.0使用下面的字符串可以连接到数据库,并随故障转移自动切换数据库,访问不受任何影响。
// Profile SQL Server 2005
SQLCA.DBMS = "ADO.Net"
SQLCA.LogPass = <*********>
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Namespace='System.Data.SqlClient',DataSource='node2.ftyy.com;Failover Partner=node1.ftyy.com;Initial Catalog=testdb_01',Database='testdb_01'"
五、小结
SQL Server 2005数据库镜像技术为企业通过提供了一个更安全、可靠和高效的数据管理平台,并降低了投入成本,大大减少了应用程序宕机时间,提高了系统的可用性,使之能不断拓展的企业应用空间,为企业带来新的商业应用机遇。
六、FAQ
1. A:单击开始镜像后,提示
1418错误,镜像服务器不存在或无法访问。
Q:先加入域,再安装数据库,用域账户启动数据库服务,使用配置数据库安全向导时用域管理员账户验证连接。
2.A:
PB10.2在连接数据库时提示Failed to creat a instance of type DbRoutine
Q:将
X:\Program Files\Sybase\Shared\PowerBuilder\PBDATA100.dll拷贝到X:\Program Files\Sybase\PowerBuilder 10.0\目录下
一、镜像简介
数据库镜像是一个高可用性软件解决方案,为客户端提供小于
10秒故障转移。每个数据库镜像配置均包含一个主体服务器(包含主体数据库)、一个镜像服务器(包含镜像数据库)和一个见证服务器,其中见证服务器是可选的。主体服务器和镜像服务器要求是独立的服务器实例。主体服务器和镜像服务器的角色是相对的,可以自动或者手动地将主体服务器设置为镜像服务器,镜像服务器设置为主体服务器。与主体服务器和镜像服务器不同的是,见证服务器并不能用于数据库。见证服务器监视主体服务器和镜像服务器,确保在给定的时间内这两个故障转移服务器中有且只有一个作为主体服务器,从而支持自动故障转移。如果存在见证服务器,同步会话将以“高可用性模式”运行,如果主体服务器出现故障,可以实现故障自动转移。如果见证服务器不存在,同步会话将以“高级别保护模式”运行,出现故障需要手动故障转移,并且有可能丢失数据。
图 1:两台服务器镜像
图 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所示。
图 3
三、管理镜像
1、 相关系统视图
sys.database_mirroring:此视图显示服务器实例中每个镜像数据库的数据库镜像元数据。实例 SQL Server 中的每个数据库在表中占一行。如果数据库未联机,或未启用数据库镜像,则除 database_id 以外的所有列的值都将为 NULL。
sys.database_mirroring_endpoints:目录视图显示有关服务器实例的数据库镜像端点的信息。
sys.dm_db_mirroring_connections:为每个数据库镜像网络连接返回一行。
2、 手动主体、镜像服务器之间的切换
在主体服务器中执行下面的代码就可以将镜像服务器设为主体服务器,主体服务器设置为镜像服务器。
USE MASTER
Go
ALTER DATABASE DBMirror SET PARTNER FAILOVER
Go |
数据库镜像是一个很好的高可用性解决方案,笔者参加微软的技术论坛时曾看到过微软的技术人员演示镜像的故障转移,如主体服务器出现故障,在
10秒内客户端就重新连到数据库服务器。限于篇幅和笔者的水平,对数据库镜像作了简单的介绍,还有很多东西没有提及到比如说客户端怎样连到服务器等等,希望本文成为读者学习镜像功能的开端。
转载于:https://blog.51cto.com/zlmzm/743190