關(guān)鍵字:事務(wù)日志 SQL Server
當系統出現故障時(shí),只要存在數據日志那么就可以利用它來(lái)恢復數據解決數據庫故障。作為SQL Server數據庫管理員,了解數據日志文件的作用,以及如何利用它來(lái)解決一些數據庫的常見(jiàn)故障,這非常重要。既然事務(wù)日志這么重要,那么他到底可以用來(lái)做什么事情呢?口說(shuō)無(wú)憑,筆者這里就跟大家說(shuō)說(shuō)事務(wù)日志到底可以用來(lái)解決什么故障。
故障一:服務(wù)器意外關(guān)閉造成的損失。
俗話(huà)說(shuō),天又不測風(fēng)云。數據庫服務(wù)器如果因為突然斷電或者其他一些原因意外當機時(shí),再重新啟動(dòng)服務(wù)器后會(huì )出現一些數據的損失。這主要是因為數據庫中的數據發(fā)生更改后,并不會(huì )在第一時(shí)間就把數據寫(xiě)入到硬盤(pán)中。為了提高數據庫的運行效率,往往是先把數據寫(xiě)入到數據高速緩存中;同時(shí)把更改的情況寫(xiě)入到事務(wù)日志中。等到一定的情況數據庫系統才會(huì )把數據寫(xiě)入到硬盤(pán)文件中。
此時(shí),如果數據庫服務(wù)器系統突然發(fā)生故障,數據庫系統就有可能還沒(méi)有把緩存中的修改后的數據寫(xiě)入到硬盤(pán)中,即數據文件內有未完成事務(wù)所做的修改。如果確實(shí)有這種情況,則當啟動(dòng)SQL Server實(shí)例時(shí),如果沒(méi)有事務(wù)日志或者事務(wù)日志損壞時(shí),修改后的數據就無(wú)法恢復過(guò)來(lái)了。但是,如果當事務(wù)日志可用的話(huà),則當實(shí)例啟動(dòng)時(shí),系統會(huì )丟每個(gè)數據庫執行恢復操作。前滾日至中記錄的、可能尚未寫(xiě)入數據文件的每個(gè)修改。在事務(wù)日志中找到的每個(gè)未完成的事務(wù)都將回滾,以確保數據庫數據的完整性。
所以當數據庫服務(wù)器意外故障時(shí),數據庫管理員最好能夠確認一下事務(wù)日志是否可用。如果事務(wù)日志已經(jīng)損壞,那么就需要先恢復事務(wù)日志然后再重新啟動(dòng)數據庫實(shí)例。否則的話(huà),數據庫實(shí)例在重新啟動(dòng)時(shí)不能夠正;謴蛿祿。這一點(diǎn)在遇到服務(wù)器突發(fā)行的故障時(shí)一定要注意。否則的話(huà),很可能破壞數據庫數據的完整性。
故障二:解決備份數據庫的數據同步問(wèn)題。
有時(shí)候出于數據庫高可用性的目的,需要在生產(chǎn)服務(wù)器之外的地方再部署一臺數據庫服務(wù)器。當生產(chǎn)服務(wù)器出現故障不可用時(shí),則可以馬上啟用這個(gè)備用的服務(wù)器。故就需要保證生產(chǎn)服務(wù)器與備用服務(wù)器之間數據的同步。那么SQL Server數據庫是通過(guò)什么技術(shù)來(lái)達到這個(gè)生產(chǎn)服務(wù)器與備份服務(wù)器之間的數據同步的呢?簡(jiǎn)單的說(shuō),就是通過(guò)這個(gè)事務(wù)日志的復制來(lái)實(shí)現數據同步的。具體的來(lái)說(shuō),SQL Server數據庫提供了兩種解決方案,分別為數據鏡像與日志傳送。這兩個(gè)方案都是在事務(wù)日志復制的基礎上來(lái)實(shí)現的。
在日志傳送方案中,生產(chǎn)服務(wù)器將生產(chǎn)數據庫的活動(dòng)事務(wù)日志發(fā)送到一個(gè)或多個(gè)目標服務(wù)器。每個(gè)輔助服務(wù)器將該日志還原為其本地的輔助數據庫,從而實(shí)現備用服務(wù)器與生產(chǎn)服務(wù)器之間數據的一致性。使用日志傳送,您可以自動(dòng)將“主服務(wù)器”實(shí)例上“主數據庫”內的事務(wù)日志備份發(fā)送到單獨“輔助服務(wù)器”實(shí)例上的一個(gè)或多個(gè)“輔助數據庫”。事務(wù)日志備份分別應用于每個(gè)輔助數據庫?蛇x的第三個(gè)服務(wù)器實(shí)例(稱(chēng)為“監視服務(wù)器”)記錄備份和還原操作的歷史記錄及狀態(tài),還可以在無(wú)法按計劃執行這些操作時(shí)引發(fā)警報。日志傳送配置中的主服務(wù)器是作為生產(chǎn)服務(wù)器的 SQL Server 數據庫引擎實(shí)例。主數據庫是主服務(wù)器上希望備份到其他服務(wù)器的數據庫。通過(guò)數據庫進(jìn)行的所有日志傳送配置管理都是在主數據庫中執行的。另外需要注意的是,如果采用日志傳送方案對于生產(chǎn)服務(wù)器的工作模式有限制。生產(chǎn)數據庫必須使用完整恢復模式或大容量日志恢復模式。如果將數據庫切換為簡(jiǎn)單恢復模式會(huì )導致日志傳送停止工作。
一臺備用服務(wù)器可以包含多臺不同生產(chǎn)服務(wù)器中數據庫的備份副本。例如,某個(gè)集團公司可能有三臺數據庫服務(wù)器,每臺服務(wù)器都運行關(guān)鍵數據庫系統。在這種情況下,可以只使用一臺輔助服務(wù)器,而不必使用三臺單獨的輔助服務(wù)器。三個(gè)主系統上的備份都可以加載到這個(gè)備份系統中,從而減少所需的資源數量并節省開(kāi)支,也可以數據庫管理員的工作量。
另外也可以通過(guò)數據庫鏡像方案中來(lái)解決生產(chǎn)服務(wù)器與備用服務(wù)器之間的數據同步問(wèn)題。生產(chǎn)數據庫的每次更新都在獨立的、完整的備份數據庫中立即重新生成。主體服務(wù)器實(shí)例立即將每個(gè)日志記錄發(fā)送到鏡像服務(wù)器實(shí)例,鏡像服務(wù)器實(shí)例將傳入的日志記錄應用于鏡像數據庫,從而將其繼續前滾!皵祿䦷扃R像”是用于提高數據庫可用性的首選軟件解決方案。鏡像基于每個(gè)數據庫實(shí)現,并且只適用于使用完整恢復模式的數據庫。簡(jiǎn)單恢復模式和大容量日志恢復模式不支持數據庫鏡像。因此,所有大容量操作始終被完整地記入日志。數據庫鏡像可使用任意支持的數據庫兼容級別。在“數據庫鏡像模式”中,主體服務(wù)器和鏡像服務(wù)器作為伙伴進(jìn)行通信和協(xié)作。兩個(gè)伙伴在會(huì )話(huà)中扮演互補的角色:主體角色(生產(chǎn)服務(wù)器)和鏡像角色(備份服務(wù)器)。在任何給定的時(shí)間,都是一個(gè)伙伴扮演生產(chǎn)服務(wù)器角色,另一個(gè)伙伴扮演備用服務(wù)器角色。如果生產(chǎn)服務(wù)器角色出現故障時(shí),則備份服務(wù)器角色馬上會(huì )頂替出現故障的生產(chǎn)服務(wù)器角色,轉變?yōu)樯a(chǎn)服務(wù)器角色。從而實(shí)現數據庫的高可用性。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/