当前位置:文档之家› 数据库镜像当前可行方案

数据库镜像当前可行方案

数据库镜像当前可行方案一、数据库镜像概述数据库镜像涉及单个数据库的两个拷贝,它们驻留在不同的SQL Server实例中,且通常位于不同的计算机中。

在任何给定时间,对客户端来说只有一个数据库拷贝可用,这个数据库拷贝称为主体数据库,存储主体数据SQL Server实例利称为主体服务器。

数据库镜像的工作原理是传送并应用数据库日志记录到数据库拷贝。

该数据库拷贝称为镜像数据库,存储镜像数据库的服务器称为镜像服务器。

主体服务器和镜像服务器都被视为数据库镜像会话中的伙伴。

对于给定服务器,它可充当一个数据库的主体角色,还可充当另一个数据库的镜像角色。

数据库镜像将主体数据库的任何修改应用于镜像数据库,包括物理修改和逻辑修改,如数据库文件和索引。

二、数据库镜像动作模式包含见证服务器。

配置数据库镜像时,需要决定要求主体数据库和镜像数据库在所有时间都保持同步以实现完全数据安全,还是能够接受在主体数据库发生故障时丢失一些数据。

在SQL Server中,在对实际数据页进行任何修改前,数据修改首先被记录到事务日志中。

事务日志记录首先存储在位于内存中的日志缓冲区,然后尽可能快地定入磁盘中的日志文件中(也被称为“事务日志固化”)。

在高安全模式下配置数据库镜像(也称同步镜像)。

当主体服务器将主体数据库的日志记录固化到磁盘(将日志缓冲区写入磁盘时)时,它还将日志缓冲区发送给镜像服务器,并等待镜像服务器的响应。

镜像服务器将日志记录固化到日志文件中后,响应提交,然后提交告之客户端。

同步传送确保镜像数据库事务日志中的所有事务都与主体数据库事务日志同步,因此认为事务被安全传送。

这可确保不会丢失数据,只要事务成功提交,主体数据库和镜像数据库就将处于同步状态。

这需要一些开销,因为仅当在镜像服务器中将事务固化到日志文件中后,事务才提交。

这将导致响应时间稍微增加,而事务吞吐量稍微降低,因为主体服务器需要等待镜像服务器有关事务已固化到镜像确认。

该延时的大小取决于很多因素,如网络延时、应用程序体系结构、磁盘吞吐量等。

与使用长事务的应用程序相比,包含很多小型事务的应用程序在响应时间方面受到的影响更大,因为需要等待来自镜像服务器的确认,而对于短事务来说,等待时间在响应时间中占的比例更大。

在高性能模式(也称异步镜像)下配置数据库镜像。

在这种模式下日志传送过程与同步模式下相同,差别是主体服务器在提交时不等待镜像有关日志已写入磁盘的确认。

由于镜像服务器总是忙于与主体服务器同步,因此如果主体服务器突然发生故障,将可能丢失数据。

在这种运行模式下,对响应时间或事务吞吐量的影响很小,因为在这种模式下运行时,就像没有镜像一样。

发送队列:从主体服务器发送日志记录到镜像服务器时,如果发送速度低于日志记录的速度,将在主体服务器中建立一个队列,该队列称为发送队列。

发送队列不占用额外的存储或内存,完全位于主体服务器的事务日志中。

它指的是还没有发送到镜像服务器的日志部分。

重做队列:在镜像服务器中应用日志记录时,如果应用速度低于接收日志记录的速度,将在镜像服务器中建立一个队列,该队列称为重做队列。

与发送队列类似,重做队列也不占用额外的存储或内存,它完全位于镜像服务器的事务日志中,指的是已定入日志文件还未应用于镜像数据库的日志部分。

三、高性能模式配置(A主体与B镜像、见证C)前期准备:1、在系统上建立系统管理员用户(例:spiderking)2、将上面设置的系统用户设置为SQL Server 启动帐户3、开放镜像端口(默认:5022)4、设置SQL登录名5、保证主体与镜像数据库同步实施阶段1、在主体服务器A运行以下命令--创建镜像端口if not exists(select * from sys.endpoints where type=4)create endpoint DBSpiderPoint --端口名state=started as tcp(listener_port=5022) --镜像端口FOR DATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=SUPPORTED)--指定端口用户use masterGRANT CONNECT ON ENDPOINT::" DBSpiderPoint " TO " db-server\spiderking"2、在镜像服务器B运行以下命令--创建镜像端口if not exists(select * from sys.endpoints where type=4)create endpoint DBSpiderPoint --端口名state=started as tcp(listener_port=5022) --镜像端口FOR DATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=SUPPORTED) --指定端口用户use masterGRANT CONNECT ON ENDPOINT::" DBSpiderPoint " TO " db-his\spiderking "3、在见证服务器C运行以下命令(高性能模式下不用设置)--创建镜像端口if not exists(select * from sys.endpoints where type=4)create endpoint DBSpiderPointstate=started as tcp(listener_port=5022)FOR DATABASE_MIRRORING(ROLE=WITNESS,ENCRYPTION=SUPPORTED) ALTER ENDPOINT DBSpiderPoint STATE=STARTED--指定端口用户use masterGRANT CONNECT ON ENDPOINT::"DBMirrorEndPoint" TO "C\xx22"启动镜像会话(注意步骤)1、在镜像服务器B运行以下命令ALTER DATABASE spiderSET PARTNER=N'TCP://A:5022'--主体服务器网络地址及镜像端口2、在主体服务器A运行以下命令ALTER DATABASE spiderSET PARTNER=N'TCP://B:5022'--镜像服务器网络地址及镜像端口3、在见证服务器C运行以下命令ALTER DATABASE spiderSET WITNESS=N'TCP://C:5022'—-见证服务器网络地址及镜像端口4、根据需要设置镜像模式(高性能不需要见证服务器)ALTER DATABASE spider SET SAFETY FULL—-FULL高安全/OFF 高性能四、高性能可用性场景A、主体服务器丢失发生故障前,A是主体服务器,B是镜像服务器。

现在A发生了故障,因此数据库对客户端来说不可用。

可使用如下命令切换到B。

(强制服务故障转移)ALTER DATABASE SPIDER SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS然而,由于是高性能模式,因此当主体服务器发生故障时,可能有一些事务还没有传送到镜像服务器,这些事务将丢失。

因此,在手式故障转移需要考虑数据丢失的可能。

当A恢复正常时,它将自动承担镜像服务器的角色,但镜像会话将挂起。

可通过运行如下命令恢复镜像会话:ALTER DATABASE SPIDER SET PARTNER RESUME切换主/镜角色,先将高性能模式转用高安全性模式再执行故障转移ALTER DATABASE spider SET SAFETY fullALTER DATABASE SPIDER SET PARTNER FAILOVERALTER DATABASE spider SET SAFETY offB、镜像服务器丢失如果镜像服务器出现故障,主体服务器将继续正常运行,且数据库服务对客户端仍可用。

但事务日志空间就不能被重用,即使备份事务日志。

如果日志文件一直保持增长,并达到最大限制或磁盘空间用尽,将导致整个数据库停止。

建议:1:确保主体服务器有足够磁盘空间用于事务日志增长,并确保在这些空间用尽前让镜像服务器恢复运行。

2、使用以下命令ALTER DATABASE SPIDER SET PARTNER OFF断开数据库镜像会话。

当镜像服务器恢复运行时,需要重新建立镜像会话。

可记录镜像服务器宕机的时间,确定主体服务器中备份事务日志的作业在正常运行。

当镜像服务器恢复联机时,对镜像数据库应用所有的事务日志。

C、主体服务器网络断开主体服务器A发生故障断开网络,主体数据库A将继续执行断开前未结束的事务。

而镜像数据库B被切换成主体服务器,做为业务数据库。

当故障解决时,因A上事务日志(中断时事务继续执行)与断开时不一致,被判断为独立的镜像主体,无法与B恢复镜像会话,需要从镜像服务器B备份数据库,到主体服务器A上进行还原。

保证双方事务同步后,再重新建立镜像会话。

感谢下载!欢迎您的下载,资料仅供参考。

相关主题