浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用
本篇文章是系列文章中的第五篇,是对前一个日志系列的补充篇。如果您对日志的基本概念还没有一个比较系统的了解,可以参看本系列之前的文章: 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 浅谈SQL Server中的事务日志(二)----事务日志在修
本篇文章是系列文章中的第五篇,是对前一个日志系列的补充篇。如果您对日志的基本概念还没有一个比较系统的了解,可以参看本系列之前的文章:
浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架
浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色
浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
浅谈SQL Server中的事务日志(四)----在完整恢复模式下日志的角色
简介
日志的作用是保证持久性和数据一致性,通过日志可以实现数据的Undo与Redo,因此通过日志,SQL Server不仅仅可以实现灾难恢复,还可以通过日志的Redo来实现高可用性。本篇文章主要讲述日志在SQL Server中提供的几种高可用性中的作用以及在灾难恢复中的角色。
日志损坏
日志可能会由于IO子系统的故障而损坏,当出现日志损坏时,如果您对日志的原来略有了解,并能在日志损坏的情况下尽量挽救数据,那么感觉一定是非常好的:-),下面我们来了解几种日志损坏的情况下的恢复情况。
1.数据库正常关闭,日志损坏。
当数据库正常关闭时,日志损坏就不是那么重要了,因为此时数据库中所有提交的事务对应的脏数据都已经CheckPoint到物理磁盘,因此不存在数据不一致的问题。因此,如果MDF和NDF文件完好,直接指定 FOR ATTACH_REBUILD_LOG参数后附加即可,如图1所示。
图1.如果数据库正常关闭,直接附加即可
但值得注意的是,使用该方式附加数据库会自动重建日志文件,日志文件大小为0.5MB,也就是2个VLF,自动增长为10%,因此您需要手动再来设置一下日志的大小,避免出现太多VLF的情况。
2.数据库非正常关闭,日志损坏
在讲述这种情况之前,我们首先来看数据库所能处在的几种状态,一个完整的模型如图2所示。
图2.数据库所能处在的状态关系
上面的几种状态的具体转换关系超出了本文的讨论范围,香港虚拟主机,但是这里我会强调两种和日志损坏关系很大的状态:RECOVERY_PENDING和SUSPECT状态。
假如出现了数据库没有正常关闭,也就是还有数据没有CheckPoint到磁盘,如果数据库要启动就必须经历Recovery过程,如果日志损坏,则无法进行该Recovery过程,就会造成数据不一致的问题。
此时,数据库可能处于下面两种状态之一:
因此处理该类情况要基于您所在的业务环境是否允许数据损失,可以选择从备份中恢复数据,或是将数据库状态改为EMERGENCY。EMERGENCY模式意味着数据库跳过crash recovery阶段,虚拟主机,香港虚拟主机,此时虽然可以访问数据库,但是会存在数据事务不一致的问题,如果仅仅是某些数据页不一致还好,但如果是对表结构修改的事务存在,那就可能存在数据库架构不一致的问题。如果您没有合适的备份集,那只能通过该方式来恢复数据。将数据库设置为EMERGENCY模式非常简单,如代码清单1所示。
ALTER DATABASE AdventureWorks2012 SET EMERGENCY

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











win10 のログは、ユーザーがシステムの使用状況を詳細に把握するのに役立ちます。自分の管理ログを探しているときに、ログ 6013 に遭遇したことがあるユーザーは多いでしょう。では、このコードは何を意味するのでしょうか。以下にそれを紹介しましょう。 win10 ログ 6013 とは: 1. これは通常のログです。このログの情報は、コンピュータが再起動されたことを意味するものではなく、最後の起動からシステムが実行されている時間を示します。このログは、毎日 1 回、12 時ちょうどに表示されます。システムの稼働時間を確認するにはどうすればよいですか? cmd に systeminfo と入力できます。その中に一行あります。

win10 のログは、ユーザーがシステムの使用状況を詳細に把握するのに役立ちます。多くのユーザーは、自分の管理ログを探しているときに、多くのエラー ログを見たことがあるはずです。そこで、どのように解決すればよいでしょうか。以下を見てみましょう。 win10 ログ イベント 7034 を解決する方法: 1. [スタート] をクリックして [コントロール パネル] を開きます。 2. [管理ツール] を見つけます。 3. [サービス] をクリックします。 4. HDZBCommServiceForV2.0 を見つけて、右クリックして [サービスの停止] を変更します。 「手動開始」へ

WindowsServerBackup は、WindowsServer オペレーティング システムに付属する機能で、ユーザーが重要なデータとシステム構成を保護し、中小企業、エンタープライズ レベルの企業に完全なバックアップおよび回復ソリューションを提供できるように設計されています。この機能を使用できるのは、Server2022 以降を実行しているユーザーのみです。この記事では、WindowsServerBackup のインストール、アンインストール、またはリセットの方法を説明します。 Windows Server バックアップをリセットする方法 サーバー バックアップで問題が発生したり、バックアップに時間がかかりすぎたり、保存されているファイルにアクセスできない場合は、Windows Server バックアップ設定をリセットすることを検討してください。 Windowsをリセットするには

Lockwaittimeoutexceeded;tryrestartingtransaction - MySQL エラーの解決方法: トランザクション待機タイムアウト。MySQL データベースを使用すると、一般的なエラーが発生することがあります: Lockwaittimeoutexceeded;tryrestartingtransaction。このエラーは、トランザクション待機タイムアウトを示します。このエラーは通常、次の場合に発生します。

Linux システムでは、次のコマンドを使用してログ ファイルの内容を表示できます。 tail コマンド: tail コマンドは、ログ ファイルの末尾の内容を表示するために使用されます。最新のログ情報を表示するための一般的なコマンドです。 tail [オプション] [ファイル名] 一般的に使用されるオプションは次のとおりです。 -n: 表示する行数を指定します。デフォルトは 10 行です。 -f: ファイルの内容をリアルタイムで監視し、ファイルが更新されたときに新しい内容を自動的に表示します。例: tail-n20logfile.txt#logfile.txt ファイルの最後の 20 行を表示 tail-flogfile.txt#logfile.txt ファイルの更新された内容をリアルタイムで監視 head コマンド: head コマンドは先頭を表示するために使用されます。ログファイルの

MySQL トランザクション処理: 自動送信と手動送信の違い。MySQL データベースでは、トランザクションは一連の SQL ステートメントです。すべての実行が成功するか、すべての実行が失敗するかのいずれかで、データの一貫性と整合性が保証されます。 MySQL では、トランザクションは自動送信と手動送信に分けられ、その違いはトランザクション送信のタイミングとトランザクションの制御範囲にあります。以下では、自動送信と手動送信の違いを詳しく紹介し、具体的なコード例を示して説明します。 1. MySQL が表示されない場合は自動的に送信する

Windows Server のビルド 26040 バージョンのリリースに際し、Microsoft は製品の正式名を Windows Server 2025 と発表しました。 Windows11WindowsInsiderCanaryChannel バージョン build26040 もリリースされました。何年も前に、誰かが Windows NT をワークステーション モードからサーバー モードに変換し、Microsoft オペレーティング システムのさまざまなバージョン間の共通点を示したことをまだ覚えている人もいるでしょう。 Microsoft の現在のバージョンのサーバー オペレーティング システムと Windows 11 には明らかな違いがありますが、詳細に注目する人は、なぜ Windows Server がブランドを更新したのか、

win10のログは内容が豊富で、自分の管理ログを探しているときにイベントID455の表示エラーを見たことがある人も多いと思いますが、これはどういう意味なのか見てみましょう。 win10 ログのイベント ID455 とは次のとおりです。 1. ID455 は、インフォメーション ストアがログ ファイルを開いたときに <file> で発生したエラー <error> です。
