爲何簡單恢復模式模式真的是壞主意?

幾個星期前一個網友問我,設置數據庫恢復模式爲簡單是不是個好的作法,還有這個作法有什麼缺點?web

我不能特別強調,但對於OLTP工做負荷(典型讀寫操做)的數據庫,使用簡單恢復模式真的不是好主意。並且設置數據庫模式爲簡單真的……(本身想象省略號是啥)。但我不想在這篇文章裏說明這個事實,我只想向你展現下,在OLTP數據庫運行簡單恢復模式,有什麼反作用。sql

你的備份/還原策略——簡單恢復模式

當我進行SQL Server體檢時,或者當我進行現場客戶諮詢時,有時我會看到生產OLTP數據庫在簡單恢復模式裏運行,我被完全戰勝了!你在和你的生活和工做開玩笑!數據庫

當我和DBA們談論這個問題時,他們大多說,設置數據庫爲簡單恢復模式是由於它們有自增加的事務日誌問題。不少人他們還不知道能夠經過按期日誌文件備份來保持事務日誌大小可控。這也是默認完整恢復模式的重要前提:按期事務日誌備份!ide

在簡單恢復模式裏,你不須要任何事務日誌備份(也不可能備份),由於SQL Server本身爲你管理事務日誌, 且按期覆蓋它。做爲反作用,你不須要事務日誌備份,你的事務日誌不會增加。idea

但缺點是什麼?你不能進行事務日誌備份!按期事務日誌備份是任何OLTP數據庫的最重要的一部分——無論你使用的是哪一個關係數據庫(RDBMS)!當你在簡單恢復模式裏運行你的數據庫,你只能進行完整和差別數據庫備份。沒別的!spa

但如今假設你的最後完成或差別比分是幾天前(甚至幾個星期前),如今由於一些問題(用戶誤操做,損壞的數據庫等等)。你必須還原你的數據庫。哈!你的數據丟失會很大,由於自上一次備份後的數據會直接丟失!日誌

但當你進行按期事務日誌備份(你使用完整恢復模式),在你要還原數據庫的時候,狀況就徹底不同。由於當你還原上一次完整和差別備份,你也能夠還原全部各個隨後發生的事務日誌備份。這就是說你會盡量丟失更少的數據,由於你已經進行了按期和頻繁的事務日誌備份。事務

多少頻率?這取決於你打算丟失多少數據。這也是你所謂的恢復點目標(Recovery Point Objective (RPO))。這主要取決於你的業務需求。我見過每小時,每15分鐘,甚至每分鐘備份事務日誌的用戶。並且事務日誌還在繼續進行:一個接一個的備份。這真的取決於你的RPO,還有你投入的資金。數據永不丟失(每一個業務都想這樣)是機會不可能的,並且很是昂貴……get

你的高可用性(HA)選項——沒有!

當你在簡單恢復模式裏運行你的數據庫,你的高可用性選項也很是有限。幾乎當下SQL Server每一個HA技術(AlwaysOn 可用性組,數據庫鏡像,事務日誌傳遞)都依賴於事務日誌和按期事務日誌備份。若是你想使用可用性組或數據庫鏡像,你的數據庫要運行在完整恢復模式。其餘模式不支持,技術上也是不可能的。it

若是你想使用事務日誌傳遞(仍是個很好的技術!)你要在大容量日誌模式裏運行你的數據庫。若是你使用簡單,你不能使用事務日誌傳遞。下次你想修改你的數據庫恢復模式是就要考慮下它的反作用。

小結

說實話:若是你有生產OLTP數據庫,而且你在意你的數據,你必須使用完整恢復模式。沒有什麼取決於……的建議。設置數據庫爲簡單並非好的主意。所以下次你想修改數據庫恢復模式時,認真考慮下這些事情。

原文連接

http://www.sqlpassion.at/archive/2016/11/14/why-the-recovery-model-simple-is-a-really-bad-idea/

相關文章
相關標籤/搜索