利用日志传送来实现数据库的可用性

这不是一个新技术, SQL SERVER2000 时就已经有了, 2005 中没有什么太大的改进,,还是由三项操作组成:
1.  在主服务器中备份事务日志
2.  然后将备份的事务日志文件复制到辅助服务器中
3.  在辅助服务器中还原日志备份
 
大家看到了这个过程还是很简单的,也就是在实现的应用中,对你所正在使用听数据库进行一个事务日志备份。备份成功后,复制到辅助服务器,这个过程不应该是管理员手动执行,而应该是通过调度来实现。然后再做一个调度,在辅助服务器上进行还原。但日志传送到此就结束了,它并不会因为主要服务器故障而实现自动转移,这是实现不了的,这个转移工作已经要由手动来实现。这点和复制是一样的。如果是通过应用程序来连接的话,还要改源代码来实现转移。这和群集和镜像是不一样的。
 
日志传送所使用的角色:
主服务器和数据库   (生产用服务器及所使用到的数据库)
辅助服务器和数据库   (用于存放备份的服务器及相应数据库)
监视服务器      用于监视主要服务器和辅助服务器的通讯,以及主服务器的运行状态,
               应该是一个专门的服务器,那如果机器不够可以和辅助服务器在一起。
                可以监视主服务器是否做了备份,这个备份是否复制,辅助服务器什么候还原等等,那么这个地方,监视到出现问题怎么办,可以给管理员发邮件以通知管理员。这要结合作业来实现。
 
 
主服务器和辅助服务器的关系:可以不是一:一的关系,可以多个主要服务器对应一个辅助服务器,用于存放多个主要服务器上的备份,以节约硬件资源
 
这三个角色如何进行工作的,全部是通过 SQL Server AGET 来实现的,所以一定要确保在所有角色上都要运行代理服务,分别执行以下作业:
主要服务器: 备份作业
辅助服务器: 复制作业,还原作业
监视服务器:警报作业
但这一系列的作业,不需要我们一一创建,只要我们配置好日志传送之后,系统会自动创建。当然前提是数据库恢复模型应该是完全或是大容量日志
 
下面我们就来看一下具体的实施步骤:
1.  确定主服务器,辅助服务器和监视服务器
2.  为事务日志备份创建文件共享,是好是一个文件服务器(我们就在主要服务器上)
3.  制定主数据库的备份计划
4.  可以为主服务器配置一个或是多个辅助服务器,注意:辅助服务器上数据库不能写,但是可以查询,
5.  配置一个监视服务器,有两种方法,可以使用存储过程,也可以使用 SSMS
 
有了上面的理论介绍,下面就可以动手了:
我们的目的很明确就是
配置日志传送
监视日志传送
实现手动的转移到辅助服务器
清除日志传送
 
步骤 1 :创建共享文件夹用于存放相关文件
         我们在 SERVER1 上创建两个共享文件夹 , server2 上创建一个共享文件夹,如上图所示:
其中   primarydata\logs 用于存放主服务器备份文件的。主服务器代理用户必须是域用户。
      Secondarydata\logs 系统会将 PRIMARY\logs 中的日志复制到此供辅助服务器使用。
      Databaseback   用于存放生产数据库的副本
 
步骤 2 备份主服务器上的数据库,注意一个数据库只能有一个日志传送
         我们以 dufei 数据库为例:辅助服务器上不能有同名数据库。
        backup database dufei to disk='c:\databasebackup\dufei.bak'
这个文件夹是主服务器上的一个共享文件夹
我们为了测试方便,我们在此创建一个表,并插入一条记录:
 
USE DUFEI
GO
CREATE TABLE YG
(
ID CHAR(4),
UNAME VARCHAR(10),
SEX CHAR(2)
)
INSERT INTO YG VALUES ('0001',' 岳雷 ',' ')
GO
BACKUP LOG DUFEI TO DISK='C:\DATABASEBACKUP\DUFEI.BAK'
GO
步骤 3   开始在主服务器上配置日志传送
下面是添加辅助服务器:
我们这里选择第二种初始化辅助数据库的方法:
但这个时候确定键是不能用的,是因为我们的操作还没有结束。我们还要复制日志文件到 SECONDARYDATA\logs 文件夹下。
下面的操作就是指定还原事务日志的模式:
有两种模式,这两种模式差别是很大的。
 
到此时三步就已经完成了。   备份 ---- 复制 ---- 还原。
 
最后我们再来指定监视服务器。
到这里为止,日志传送就配置结束了:点击确定
测试:到 SERVER2 上可以看到 DUFEI 数据库已经创建成功了,并且岳雷这条记录也出现在辅助数据库中。
并且在 SERVER2 的共享文件夹中可以看到相应的日志文件也复制过来了。
 
与复制的目的是一样的,结果也相同,都不能实现自动的转移,但事务复制要求参与的表必须要有主键,而日志传送不需要。
 
日志文件应该是两分钟复制一次,但我们也没有必要每次都打开文件夹来查看,我们可以利用监视功能来监视服务器的运行状况。并定义一个警报来对你的日志传送进行监控,如果发生了故障,则通过操作员。但默认情况下,警报肯定是用不了的,我们要设置一下,如:
我们在监视服务器上:会发生自动多出两个警报
如果希望这两个警报能正常工作,我们要设置一下,过程如下:
1.  定义操作员:
2.  配置警报:
此时,再启用网卡,则一切又 OK 了!
1.  查看日志传送状况 Z
在监视服务器上:
 
可以测试一下,我们在主服务器上创建一个表,或是更新一条记录,会很快的反映到辅助服务器。
最近我们来看一下如何手动的实现故障转移
1.  我们手动停止主要服务器上的 SQL SERVER 服务,删除相应的 DUFEI 数据库所对应的 MDF 文件   再次启动服务器,会发现 DUFEI 数据库已经不能用了。
2.  在辅助服务器上,禁用代理,运行命令
此时,辅助服务器上的 DUFEI 数据库就不再是只读了。!
但要注意的是:监视服务器上的代理作业也应该禁用,不然会不停的发出警报。
 
好,我们的实验就到此结束了!
 
最后可以清除日志传送:
关于日志传送就介绍到此! 

你可能感兴趣的:(sql,server,职场,可用性,休闲)