為什麼完全恢復模型是可用性組的要求?
我們所有的生產數據庫都採用簡單的恢復模式,並且非常高興,因為它完全滿足了我們的 RPO 和 RTO。
現在我們想為我們的數據庫實施 AG DR 解決方案,我們發現完全恢復模式是必需的。
我的問題是為什麼?從理論上講,AG 或其他 SQL Server DR 解決方案(日誌傳送、數據庫鏡像)不應該與簡單恢復模型一起使用是否有任何技術原因?
如果在簡單恢復中允許使用 DR 技術,那麼 HA 沒有任何意義。事務日誌是時間點恢復的必需品*。*事務日誌是 DR 技術用來重放在 Logshipped/mirrored 數據庫上完成的事務的東西,由於在簡單恢復中無法進行日誌備份,因此您也無法在簡單恢復中配置 HA/DR。在鏡像中,事務日誌塊更改被發送到鏡像伺服器;在日誌傳送中,發送事務日誌備份。因此,您可以看到 Mirroring/Logshipping/AlwayON 工作的非常基本的概念是事務日誌。
事務日誌是數據庫中最重要的部分——它是唯一能保證在發生崩潰時對數據庫的所有更改進行描述的地方。單個事務的日誌記錄由它們的 LSN 連結,幾乎就像一個時間戳。此時間戳在內部用於連結各種事務並在 DR 伺服器上重放。
DR 技術的主要目標是提供盡可能少的數據失去,而這只有在事務日誌保持結構一致的情況下才能實現。在簡單恢復中,事務日誌在事務送出的那一刻被截斷,這意味著不需要資訊,舊事務佔用的空間現在將用於寫入新事務。在這種情況下,舊資訊將失去。如果你想得到它,你不能。但在完全康復的情況下,你可以做到。
這是因為這些方法依賴於事務日誌,而事務日誌本身只有在完全恢復模型中才可靠。請完整閱讀以下頁面,因為其中有一些關於簡單恢復和完全恢復之間差異的提示,以及為什麼完全對 DR 如此重要:
如果您想使用簡單恢復,那麼您將只能通過進行完整備份和差異備份來實現 DR。在這種情況下,您將失去時間點恢復。
在某些情況下沒關係,但我們不知道您的 RPO/RTO 是什麼,也不知道您對數據失去的容忍度、備份使用的磁碟空間等。您可以保持簡單恢復模式並擁有相對可靠的 RPO,如果您想全天每分鐘進行一次完整備份或差異備份。日誌備份往往是實現最佳 RPO 的一種更快、更簡單、更可靠的方法,我懷疑大多數人已經出於這個原因使用了完全恢復。因此,AlwaysOn 和利用此模型的其他技術的要求通常不會成為絆腳石或令人頭疼的問題。但它是一個硬性要求,並且原因相當無關緊要,但您可能會認為最基本的原因之一是在簡單的恢復(甚至批量記錄)中,您實際上可能會失去永遠不會發送到輔助伺服器的事務,使其處於不一致的狀態。
一切都是取捨。我的感覺是,很多人更喜歡簡單的恢復,因為他們需要處理的事務日誌問題更少(然而,這些問題減少到 0 是一個神話)。就像很多事情一樣——這種權衡非常有效,直到您真正遇到磁碟故障、人為錯誤或其他需要您恢復備份的中斷。在完全恢復中,您不得不主動管理日誌(否則它們會消耗您的磁碟),並且在發生故障時您始終可以及時到達特定時間點。簡而言之,在我看來,這似乎是一個非常容易根本不關注備份的途徑。這只是一種觀點,而不是技術事實,但它基於非常大的樣本量。