当前位置:首页 > 系统运维 > 正文内容

通过事务日志解决SQL Server常见四大故障

a8116255310年前 (2015-11-05)系统运维8

当系统出现故障时,只要存在数据日志那么就可以利用它来恢复数据解决数据库故障。作为SQL Server数据库管理员,了解数据日志文件的作用,以及如何利用它来解决一些数据库的常见故障,这非常重要。既然事务日志这么重要,那么他到底可以用来做什么事情呢 口说无凭,笔者这里就跟大家说说事务日志到底可以用来解决什么故障。

故障一:服务器意外关闭造成的损失

俗话说,天又不测风云。数据库服务器假如因为突然断电或者其他一些原因意外当机时,再重新启动服务器后会出现一些数据的损失。这主要是因为数据库中的数据发生更改后,并不会在之一时间就把数据写入到硬盘中。为了提高数据库的运行效率,往往是先把数据写入到数据高速缓存中;同时把更改的情况写入到事务日志中。等到一定的情况数据库系统才会把数据写入到硬盘文件中。

此时,假如数据库服务器系统突然发生故障,数据库系统就有可能还没有把缓存中的修改后的数据写入到硬盘中,即数据文件内有未完成事务所做的修改。假如确实有这种情况,则当启动SQL Server实例时,假如没有事务日志或者事务日志损坏时,修改后的数据就无法恢复过来了。但是,假如当事务日志可用的话,则当实例启动时,系统会丢每个数据库执行恢复操作。前滚日至中记录的、可能尚未写入数据文件的每个修改。在事务日志中找到的每个未完成的事务都将回滚,以确保数据库数据的完整性。

所以当数据库服务器意外故障时,数据库管理员更好能够确认一下事务日志是否可用。假如事务日志已经损坏,那么就需要先恢复事务日志然后再重新启动数据库实例。否则的话,数据库实例在重新启动时不能够正常恢复数据。这一点在遇到服务器突发行的故障时一定要注意。否则的话,很可能破坏数据库数据的完整性。

故障二:解决备份数据库的数据同步问题

有时候出于数据库高可用性的目的,需要在生产服务器之外的地方再部署一台数据库服务器。当生产服务器出现故障不可用时,则可以马上启用这个备用的服务器。故就需要保证生产服务器与备用服务器之间数据的同步。那么SQL Server数据库是通过什么技术来达到这个生产服务器与备份服务器之间的数据同步的呢 简单的说,就是通过这个事务日志的复制来实现数据同步的。具体的来说,SQL Server数据库提供了两种解决方案,分别为数据镜像与日志传送。这两个方案都是在事务日志复制的基础上来实现的。

在日志传送方案中,生产服务器将生产数据库的活动事务日志发送到一个或多个目标服务器。每个辅助服务器将该日志还原为其本地的辅助数据库,从而实现备用服务器与生产服务器之间数据的一致性。使用日志传送,您可以自动将“主服务器”实例上“主数据库”内的事务日志备份发送到单独“辅助服务器”实例上的一个或多个“辅助数据库”。事务日志备份分别应用于每个辅助数据库。可选的第三个服务器实例(称为“监shi服务器”)记录备份和还原操作的历史记录及状态,还可以在无法按计划执行这些操作时引发警报。日志传送配置中的主服务器是作为生产服务器的 SQL Server 数据库引擎实例。主数据库是主服务器上希望备份到其他服务器的数据库。通过数据库进行的所有日志传送配置管理都是在主数据库中执行的。另外需要注意的是,假如采用日志传送方案对于生产服务器的工作模式有限制。生产数据库必须使用完整恢复模式或大容量日志恢复模式。假如将数据库切换为简单恢复模式会导致日志传送停止工作。

一台备用服务器可以包含多台不同生产服务器中数据库的备份副本。例如,某个集团公司可能有三台数据库服务器,每台服务器都运行关键数据库系统。在这种情况下,可以只使用一台辅助服务器,而不必使用三台单独的辅助服务器。三个主系统上的备份都可以加载到这个备份系统中,从而减少所需的资源数量并节省开支,也可以数据库管理员的工作量。

另外也可以通过数据库镜像方案中来解决生产服务器与备用服务器之间的数据同步问题。生产数据库的每次更新都在独立的、完整的备份数据库中立即重新生成。主体服务器实例立即将每个日志记录发送到镜像服务器实例,镜像服务器实例将传入的日志记录应用于镜像数据库,从而将其继续前滚。“数据库镜像”是用于提高数据库可用性的首选软件解决方案。镜像基于每个数据库实现,并且只适用于使用完整恢复模式的数据库。简单恢复模式和大容量日志恢复模式不支持数据库镜像。因此,所有大容量操作始终被完整地记入日志。数据库镜像可使用任意支持的数据库兼容级别。在“数据库镜像模式”中,主体服务器和镜像服务器作为伙伴进行通信和协作。两个伙伴在会话中扮演互补的角色:主体角色(生产服务器)和镜像角色(备份服务器)。在任何给定的时间,都是一个伙伴扮演生产服务器角色,另一个伙伴扮演备用服务器角色。假如生产服务器角色出现故障时,则备份服务器角色马上会顶替出现故障的生产服务器角色,转变为生产服务器角色。从而实现数据库的高可用性。

数据库镜像方案有两种镜像运行模式。一种是“高安全性模式”,它支持同步操作。在高安全性模式下,当会话开始时,镜像服务器将使镜像数据库尽快与主体数据库同步,一旦同步了数据库,事务将在伙伴双方处提交,这会延长事务滞后时间。第二种运行模式,即高性能模式,它与之一种模式的主要差异就在于异步运行。镜像服务器尝试与主体服务器发送的日志记录保持同步。镜像数据库可能稍微滞后于主体数据库。但是,数据库之间的时间间隔通常很小。但是,假如主体服务器的工作负荷过高或镜像服务器系统的负荷过高,则时间间隔会增大。在高性能模式中,主体服务器向镜像服务器发送日志记录之后,会立即再向客户端发送一条确认消息。它不会等待镜像服务器的确认。这意味着事务不需要等待镜像服务器将日志写入磁盘便可提交。此异步操作允许主体服务器在事务滞后时间最小的条件下运行,但可能会丢失某些数据。具体采用哪种模式,则需要数据库管理员根据企业对待数据损失的态度与工作负荷等来确定。

可见现在可用的备份服务器与生产服务器之间的数据同步解决方案都是基于事务日志来实现的。

故障三:解决数据一致性问题

假设现在有这么一种情况。在一个银行系统中,某个用户需要转帐。这个转帐作业主要是通过两个步骤来完成。之一个步骤就是扣减用户帐户中的金额;第二个步骤是把钱转入到另外一个用户那里。现在假如在转帐的过程中,之一步成功了,但是第二个步骤因为某种原因出错了。如用户提供的帐户名字与实际转帐的帐户名字不符,则第二个操作就会失败。此时整个转帐操作就会以失败而告终。但是现在的问题是,之一个扣减的动作在数据库zhon给已经完成了。而实际却是没有转帐成功,就救造成了数据一致性的问题。

实际过程中假如应用程序发出 ROLLBACK 语句,或者数据库引擎检测到错误,就使用日志记录回滚未完成的事务所做的修改。也就是说,当第二个操作失败的话,应用程序要发出一个ROLLBACK 语句,利用事务日志回滚功能,恢复之一步的操作。也就是说,把扣减金额的操作进行恢复,从而实现数据的一致性。类似的应用,在数据库开发过程中很频繁。

故障四:数据库时点恢复的问题

如现在遇到这么一种故障。数据库系统在上午11点突然发现故障,启动不起来了。而数据库系统是在昨天晚上12点刚做完一个完全备份。在这种情况下,假如只是从完全备份中恢复数据的话,只能够恢复到昨天晚上12点的数据。那从昨天晚上12点到今天上午11点的数据就不能够恢复了吗
其实不然。因为用户在对数据库做的任何一个修改都会保存在事务日志当中。为此只要事务日志不损坏的情况下,数据库管理员可以把数据恢复到上午11点那个时刻的数据。具体的操作 *** 很简单,就好先利用完全备份文件恢复数据库系统,此时数据库中的数据位昨天晚上12点的数据。然后再利用日志恢复功能把数据恢复到今天上午11点的数据。可见事务日志可以帮助管理员把数据恢复到某一个具体的时点。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/22593.html

分享给朋友:

“通过事务日志解决SQL Server常见四大故障” 的相关文章

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

在某些电脑中,机器内部蜂鸣器与系统的声音输出方案是相关联的,这样一来会导致当系统输出声音时,即使电脑没有连接外部音响或耳机,也会通过内置蜂鸣器发出“嘟嘟哔哔”的声音。这个问题主要出现在Windows 7电脑中,假如你的电脑恰好遇到了这样的问题,可参考下面的方法来解决: 1、在桌面“计算机”图标上右...

如何删除自带的不常用应用为windows 7减负

如何删除自带的不常用应用为windows 7减负

对于Windows 7系统来说,其默认安装的许多工具是我们很少使用或从来不用的,比如系统自带的扫雷、纸牌游戏等。删除此类长期不用的系统组件,不但可以让系统更清爽,更重要的是还可以提高系统的运行速度,特别是对于硬件配置相对较低的上网本来说,尤其如此。接下来,笔者就给大家介绍一下如何删除Windows...

Windows7开机后出现黑一下屏性能降低

Windows7开机后出现黑一下屏性能降低

打开IE浏览器的时候、聊QQ的时候、玩游戏的时候… … 这到底是谁惹的祸呢? 很多人都知道Windows 7桌面特效全部开启会使系统性能降低,那到底是哪个特效导致的这一情况呢? 解决办法: 右键计算机,高级系统设置-性能-设置-关闭”任务栏和开始菜单使用动画“和”最大化和最小化动态显示窗口“...

windows 7查看电脑近期使用情况确定有没有被他人使用

windows 7查看电脑近期使用情况确定有没有被他人使用

我一个朋友最近装装了Windows 7,他总感觉有人用了他的电脑,但是一直不确定,他想知道有没有人动用他的电脑,问我有没有办法 我说设置一下就行了: 启动Windows 7,在搜索栏中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模...

微软今天正式停止对windows 7的主流支持

微软今天正式停止对windows 7的主流支持

北京时间1月13日消息,根据计划,微软将于2015年1月13日正式结束对Windows 7SP1的“主流支持”,而这也标志着“扩展支持”阶段的开始,这个阶段将于2020年1月14日结束。 2013年10月份,微软终止销售独立的Windows 7系统安装包,并要求制造商于2014年10月份停止生...

windows 7系统件夹和文件都不显示名字如何解决

windows 7系统件夹和文件都不显示名字如何解决

假如碰到电脑里的文件夹和文件全都不显示名字了(如下图),是不是电脑中毒了呢 请教下笔者有没好的解决方法!下面是笔者给出的答案,希望能够帮助到大家! 首先打开你用来装图片的文件夹(缩略图下面的文字不显示的文件夹),然后但击工具栏上的“查看”选择“平铺”, 下面就是关键:要按住SHIFT键不...