事務日誌初探(二) 簡單恢復模式

2021-09-06 22:32:55 字數 2565 閱讀 9042

簡述

在簡單恢復模式下,日誌檔案的作用僅僅是保證了sql server事務的acid屬性。並不承擔具體的恢復資料的角色。正如」簡單」這個詞的字面意思一樣,資料的備份和恢復僅僅是依賴於手動備份和恢復.我們簡單介紹下三種恢復模式。

1.完整恢復模式

這種模式會為所有操作都記錄日誌,當資料檔案被破壞時,可以備份尾部事務日誌,並用於將資料庫還原到給定的時間點。因此oltp生產系統通常會使用完整的恢復模式。

2.大容量日誌恢復模式

這種模式把日誌記錄量最小化,只為大容量操作記錄日誌。

3.簡單恢復模式

我們本篇的重點介紹該模式,該模式下不儲存事務日誌,由於檢查點程序會截斷事務日誌,因此不需要維護事務日誌。如果把資料庫從其他恢復模式切換到這個模式下,會破壞事務日誌的連續性,因為無法備份事務日誌,在這種模式下,無法進行到某個時間的恢復。

事務日誌

備份:僅僅備份自上次完整備份或日誌備份之後的記錄。在簡單模式下,日誌備份毫無意義(sql server不允許在簡單恢復模式下備份日誌)。

我們在每週一0點做一次完整備份,在週三0點和周五0點分別做差異備份。在簡單恢復模式下,如果週六資料庫崩潰。我們的恢復計畫只有根據周一0點的做的完整備份恢復後,再利用周五0點的差異備份進行恢復.而周五0點之後到伺服器崩潰期間所有的資料將會丟失。

正如」簡單」這個詞所涵蓋的意思,在簡單恢復模式下,日誌可以完全不用管理。而備份和恢復完全依賴於我們自己的完整和差異備份.

恢復模式是乙個資料庫級別的引數,可以通過在ssms裡或通過sql語句進行配置:

簡單恢復模式下日誌的空間使用

日誌檔案會劃分成多個vlf進行管理,在邏輯上記錄是線性的,給每個記錄乙個順序的,唯一的lsn。

而在簡單恢復模式下,為了保證事務的永續性,那些有可能回滾的資料會被寫入日誌。這些日誌需要被暫時儲存在日誌以確保在特定條件下事務可以順利回滾。這就涉及到了乙個概念—最小恢復lsn(minimum recovery lsn(minlsn) )

minlsn是在還未結束的事務記錄在日誌中最小的lsn號,minlsn是下列三者之一的最小值:

下圖是乙個日誌的片段:

(摘自msdn)

可以看到,最新的lsn是148,147是checkpoint,在這個checkpoint之前事務1已經完成,而事務2還未完成,所以對應的minlsn應該是事務2的開始,也就是142.

而從minlsn到日誌的邏輯結尾處,則稱為活動日誌(active log)。

而活動日誌分布在物理vlf上的關係可以用下圖表示:

因此,vlf的狀態是源自其上所含有的lsn的狀態,可以分為兩大類:活動vlf和不活動vlf

而更加細分可以將vlf的狀態分為以下四類:

活動(active)–在vlf 上儲存的任意一條lsn是活動的時,則vlf則為活動狀態,即使乙個200m的vlf只包含了一條lsn,如上圖的vlf3

可恢復(recoverable)– vlf是不活動的,vlf上不包含活動lsn,但還未被截斷(truncated)

可重用(reusable)– vlf是不活動的,vlf上不包含活動lsn,已經被截斷(truncated),可以重用

未使用(unused)– vlf是不活動的,並且還未被使用過

概念如下圖:

而所謂的截斷(truncated)只是將可恢復狀態的vlf轉換到可重用狀態。在簡單恢復模式下,每一次checkpoint,都會去檢查是否有日誌可以截斷.如果有inactive的vlf時,checkpoint都會將可截斷部分進行截斷,並將minlsn向後推.

在日誌達到日誌檔案(ldf檔案)末尾時,也就是上圖的vlf8時,會重新迴圈到vlf1開始,以便讓空間進行重複利用.所以日誌雖然可以從物理順序上是從vlf1到vlf8,但邏輯順序可以是從vlf6開始到vlf2結束:

因此可以看出,簡單恢復模式下日誌是不儲存的(當事務結束後,相關的會被截斷)。僅僅是用於保證事務回滾和崩潰恢復的用途.所以備份日誌也就無從談起,更不能利用日誌來恢復資料庫。總結

本文介紹了簡單恢復模式下日誌的原理,並簡單的引出了一些備份或者恢復資料的基礎。而實際上,除了在開發或測試環境下。使用簡單恢復模式的場景並不多,因為在現實生活中,在生產環境允許幾個小時的資料丟失的場景幾乎沒有.下篇文章將會講述在完整恢復模式下,日誌的作用。

參考:

mysql 事務日誌備份 事務日誌備份與恢復 6

14.6 備份與恢復疑難問題 接下來介紹備份與恢復中的一些疑難問題。14.6.1 恢復中的單使用者模式問題 1 故障現象 圖14 31 故障現象 2 原因分析 這是因為在還原資料庫時,有其他使用者正在使用資料庫。還原資料庫要求資料庫工作在單使用者模式。通常就是dba在操作時,不允許其他使用者連線資料...

事務日誌備份與恢復

接下來介紹備份與恢復中的一些疑難問題。1 故障現象 圖14 31 故障現象 2 原因分析 這是因為在還原資料庫時,有其他使用者正在使用資料庫。還原資料庫要求資料庫工作在單使用者模式。通常就是dba在操作時,不允許其他使用者連線資料庫。3 解決方法 配置資料庫的屬性,在如圖14 32所示的 選項 選項...

簡單恢復模式下,日誌檔案的增長

最近公司要把兩個sql sever 2005 資料庫合併成乙個資料庫,乙個資料庫26g,乙個資料庫31g。這只是mdf檔案,不是ldf檔案。在合併之前就考慮到了日誌檔案會很大,但是沒有想到這麼大 把資料庫設定成簡單恢復模式,日誌檔案照樣非常大。簡單恢復模式並不等於沒有或者很少的日誌量。當我使用預設的...