同Oracle資料庫一樣,SQL
Server資料庫中也有交易記錄。交易記錄主要用來記錄所有事務以及每個事務對資料庫進行了哪些更改。交易記錄可以說是資料庫中最重要的資料檔案之一。
當系統出現故障時,只要存在資料日誌那麼就可以利用它來恢複資料解決資料庫故障。作為SQL
Server資料庫管理員,瞭解資料記錄檔的作用,以及如何利用它來解決一些資料庫的常見故障,這非常重要。既然交易記錄這麼重要,那麼他到底可以用來做什麼事情呢?口說無憑,筆者這裡就跟大家說說交易記錄到底可以用來解決什麼故障。
故障一:伺服器意外關閉造成的損失。
俗話說,天又不測風雲。資料庫伺服器如果因為突然斷電或者其他一些原因意外當機時,再重新啟動伺服器後會出現一些資料的損失。這主要是因為資料庫中的資料發生更改後,並不會在第一時間就把資料寫入到硬碟中。為了提高資料庫的運行效率,往往是先把資料寫入到資料快取中;同時把更改的情況寫入到交易記錄中。等到一定的情況資料庫系統才會把資料寫入到硬碟檔案中。
此時,如果資料庫伺服器系統突然發生故障,資料庫系統就有可能還沒有把緩衝中的修改後的資料寫入到硬碟中,即資料檔案內有未完成事務所做的修改。如果確實有這種情況,則當啟動SQL
Server執行個體時,如果沒有交易記錄或者交易記錄損壞時,修改後的資料就無法恢複過來了。但是,如果當交易記錄可用的話,則當執行個體啟動時,系統會丟每個資料庫執行恢複操作。前滾日至中記錄的、可能尚未寫入資料檔案的每個修改。在交易記錄中找到的每個未完成的事務都將復原,以確保資料庫資料的完整性。
所以當資料庫伺服器意外故障時,資料庫管理員最好能夠確認一下交易記錄是否可用。如果交易記錄已經損壞,那麼就需要先恢複交易記錄然後再重新啟動資料庫執行個體。否則的話,資料庫執行個體在重新啟動時不能夠正常恢複資料。這一點在遇到伺服器突發行的故障時一定要注意。否則的話,很可能破壞資料庫資料的完整性。
故障二:解決備份資料庫的資料同步問題。
有時候出於資料庫高可用性的目的,需要在生產伺服器之外的地方再部署一台資料庫伺服器。當生產伺服器出現故障不可用時,則可以馬上啟用這個備用的伺服器。故就需要保證生產伺服器與待命伺服器之間資料的同步。那麼SQL
Server資料庫是通過什麼技術來達到這個生產伺服器與備份伺服器之間的資料同步的呢?簡單的說,就是通過這個交易記錄的複製來實現資料同步的。具體的來說,SQL
Server資料庫提供了兩種解決方案,分別為資料鏡像與記錄傳送。這兩個方案都是在交易記錄複製的基礎上來實現的。
在記錄傳送方案中,生產伺服器將生產資料庫的活動交易記錄發送到一個或多個目標伺服器。每個次要伺服器將該日誌還原為其本地的次要資料庫,從而實現待命伺服器與生產伺服器之間資料的一致性。使用記錄傳送,您可以自動將“主伺服器”執行個體上“主要資料庫”內的交易記錄備份發送到單獨“次要伺服器”執行個體上的一個或多個“次要資料庫”。交易記錄備份分別應用於每個次要資料庫。可選的第三個伺服器執行個體(稱為“監視伺服器”)記錄備份與還原操作的記錄及狀態,還可以在無法按計劃執行這些操作時引發警報。記錄傳送設定中的主伺服器是作為生產伺服器的
SQL Server
資料庫引擎執行個體。主要資料庫是主伺服器上希望備份到其他伺服器的資料庫。通過資料庫進行的所有記錄傳送設定管理都是在主要資料庫中執行的。另外需要注意的是,如果採用記錄傳送方案對於生產伺服器的工作模式有限制。生產資料庫必須使用完整復原模式或大量記錄復原模式。如果將資料庫切換為簡單復原模式會導致記錄傳送停止工作。
一台待命伺服器可以包含多台不同生產伺服器中資料庫的備份副本。例如,某個集團公司可能有三台資料庫伺服器,每台伺服器都運行關鍵資料庫系統。在這種情況下,可以只使用一台次要伺服器,而不必使用三台單獨的次要伺服器。三個主系統上的備份都可以載入到這個備份系統中,從而減少所需的資源數量並節省開支,也可以資料庫管理員的工作量。
另外也可以通過資料庫鏡像方案中來解決生產伺服器與待命伺服器之間的資料同步問題。生產資料庫的每次更新都在獨立的、完整的備份資料庫中立即重建。主體伺服器執行個體立即將每個日誌記錄發送到鏡像伺服器執行個體,鏡像伺服器執行個體將傳入的日誌記錄應用於鏡像資料庫,從而將其繼續前滾。“資料庫鏡像”是用於提高資料庫可用性的首選軟體解決方案。鏡像基於每個資料庫實現,並且只適用於使用完整復原模式的資料庫。簡單復原模式和大量記錄復原模式不支援資料庫鏡像。因此,所有大容量操作始終被完整地記入日誌。資料庫鏡像可使用任意支援的資料庫相容層級。在“資料庫鏡像模式”中,主體伺服器和鏡像伺服器作為夥伴進行通訊和協作。兩個夥伴在會話中扮演互補的角色:主體角色(生產伺服器)和鏡像角色(備份伺服器)。在任何給定的時間,都是一個夥伴扮演生產伺服器角色,另一個夥伴扮演待命伺服器角色。如果生產伺服器角色出現故障時,則備份伺服器角色馬上會頂替出現故障的生產伺服器角色,轉變為生產伺服器角色。從而實現資料庫的高可用性。