SQL Server的“高可用性”与“灾难恢复” 之三 日志传送

SQL Server有多种技术可以用于实现自动创建冗余数据拷贝,提供数据灾难恢复的功能。其中,日志传送(logshipping)是最早出现的技术之一。虽然日志传送“年纪”很大,但是它依旧凭借着其独有的特点,在SQLServer的灾难恢复技术中扮演着重要的角色。

日志传送的结构

日志传送的工作机制非常简单。它主要是通过最基本的数据库事务日志备份和还原任务,来保持两台或者多台机器之间数据库同步,以此来实现数据冗余、灾难恢复的目的。

这里先来看看在日志传送中各个服务器所扮演的角色。

主服务器和数据库

日志传送配置的“主服务器”(primary server),是作为生产服务器的 SQL Server实例。主数据库是主服务器上希望备份到其他服务器的数据库。所有用户端发来的数据操作请求,都是由主数据库处理的。

主数据库必须使用完整恢复模式或大容量日志恢复模式,简单恢复模式由于无法做日志备份,所以不被日志传送所支持。在一个日志传送的环境中,如果您将数据库的恢复模式改成简单恢复模式,日志传送会立刻停止工作。

辅助服务器和数据库

辅助服务器(secondary server)是您想要在其中保留主数据库备用副本的服务器。在辅助服务器上的辅助数据库,可以配置为以下两种状态:

1.  无恢复模式(NORECOVERY):既不前滚也不回滚未提交的事务,数据不可读。

2.  备用模式(STANDBY):在恢复日志期间回滚所有未提交的事务,并且将所有未提交的事务保存为一个单独的Transaction UndoFile(TUF)文件,恢复过程通过该文件来维护事务的完整性,当恢复下一个事务的时候则恢复所有已提交的事务。这种状态下,数据库是可读的,此时该辅助数据库可被用于生成报表之类的只读的需求。

在日志传送的配置中,一台主服务器可以有多台对应的辅助数据库。在每个辅助数据库上都有主服务器上的主数据库的备份。比如,可以有3台辅助服务器,第1和第2台辅助服务器上的辅助数据库设置成NORECOVERY模式,提供冗余的灾备功能。即使某一台辅助服务器出现了问题,另一台辅助服务器依旧可以提供灾难恢复功能。第3台辅助服务器上的辅助数据库则可以设置为STANDBY模式,这样,可以把所有OLTP类型的请求都交给主服务器处理;把所有数据仓库类型的请求交给辅助数据库。这样一定程度上减轻了主数据库的负载,对数据库系统的性能提高也有好处。您可以通过查询系统表log_shipping_primary_secondaries来知道某个主数据库有哪些对应的辅助数据库。

另外,一台辅助服务器也可以包含存储在多台不同主服务器中数据库的备份副本。比如说,你可能有五台服务器,每台服务器都运行关键数据库系统。在这种情况下,可以只使用一台辅助服务器,而不必使用五台单独的辅助服务器。五个主系统上的备份都可以加载到这个备份系统中,从而减少所需的服务器数量并节省开支。

监视服务器

监视服务器是可选的,它可以跟踪日志传送的所有细节,包括:

·        主数据库中事务日志最近一次备份的时间。

·        辅助服务器最近一次复制和还原备份文件的时间。

·        有关任何备份失败警报的信息。

监视服务器应独立于主服务器和辅助服务器,以避免由于主服务器或辅助服务器的丢失而丢失关键信息和中断监视。一台监视服务器可以监视多个日志传送配置。在这种情况下,使用该监视服务器的所有日志传送配置将共享一个警报作业。

日志传送的工作机制

日志传送的工作机制非常简单。日志传送组件在主服务器上对数据库做日志备份,然后把日志备份文件复制到所有的辅助服务器上,最后在辅助服务器上将日志备份还原上去。通过不断重复这样的过程,就实现了主服务器和辅助服务器上数据库的同步。

所有这些备份/复制/还原操作当然不可能是人为触发。日志传送会在主服务器,辅助数据库,以及监视数据库上创建相应的作业来分别完成这些工作。每个服务器上的SQLServer Agent服务会每隔一定时间间隔来启动这些作业。

日志传送一共有4个作业,分别是备份作业、复制作业、还原作业和警报作业。这些作业是如何协作运行,完成数据传递的目标呢?

现在来分别讨论每个作业。

备份作业

日志传送在主服务器上为每个主数据库创建一个备份作业。它负责对数据库做日志备份,将备份操作的历史信息记录到本地服务器和监视服务器上,并根据作业的设置来删除旧的日志备份文件和历史记录信息。默认情况下,SQLServer Agent服务每 15 分钟执行一次此作业,当然间隔也是可以修改的。备份作业会把日志备份文件放到一个指定的共享目录上去,等待复制作业的操作。

从SQL Server 2008开始,SQLServer的企业版支持备份压缩的功能。用户在创建日志传送的时候,可以选择是否为备份作业启用备份压缩。这对于一些非常繁忙的系统会很有用,它可以减少服务器上由于备份造成的I/O操作,也可以减低复制日志备份文件所需要的时间。

SQL Server 2000日志传送的备份作业就是直接通过SQLServer

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值