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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介:   同Oracle数据库一样,SQL Server数据库中也有事务日志。事务日志主要用来记录所有事务以及每个事务对数据库进行了哪些更改。事务日志可以说是数据库中最重要的数据文件之一。   当系统出现故障时,只要存在数据日志那么就可以利用它来恢复数据解决数据库故障。
  同Oracle数据库一样,SQL Server数据库中也有事务日志。事务日志主要用来记录所有事务以及每个事务对数据库进行了哪些更改。事务日志可以说是数据库中最重要的数据文件之一。

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

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

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

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

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

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

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

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

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

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

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
29天前
|
人工智能 运维 监控
别再满世界找日志了:聊聊如何用AI帮运维团队快速排查故障
别再满世界找日志了:聊聊如何用AI帮运维团队快速排查故障
243 15
|
3月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
23天前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
94 6
|
5月前
|
人工智能 运维 监控
兄弟,你还在翻日志看故障?AI都快替你写日报了!
兄弟,你还在翻日志看故障?AI都快替你写日报了!
338 7
|
9月前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
403 7
MySQL事务日志-Undo Log工作原理分析
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
2232 14
MySQL事务日志-Redo Log工作原理分析
|
10月前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
10月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
426 5
|
11月前
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
348 2