日誌傳送,SQL Server高可用性的重要舉措

iSQlServer發表於2009-04-20
若把使用者在資料庫選擇時所需要考慮的因素進行一一排列,那麼資料庫的高可用性肯定是名列前茅的。所以,軟體公司一直把如何提高資料庫的可用性作為他們研究的主要課題之一。在微軟的SQL Server資料庫中,提供了很多高可用性的工具。而日誌傳送,是這些工具中的一個主角。若資料庫管理員能夠合理配置日誌傳送,則可以達到一個很高的可用性。或者說,可以把資料庫的停機時間減少為零。

  那麼該如何來配置日誌傳送來達到這個目的呢?筆者就結合自己公司的案例,談談在日誌傳送管理中該注意的問題與技巧。

  一、日誌傳送的三個角色與四個步驟。 

日誌傳送,SQL Server高可用性的重要舉措

  如上圖,日誌傳送簡單地說,就是通過上面的三個伺服器角色與四個步驟來完成的。

  第一步:備份日誌。

  主伺服器會根據資料庫管理員設定的備份計劃,對事務日誌按照計劃進行備份。這是日誌傳送中的一個重要的內容。因為若主伺服器的日誌備份失敗的話,則後續的工作都將無法進行。故我們往往需要對這個日誌的備份進行監視,看看其是否按照資料庫管理員所設想的方式在處理。為了達到這個目的,我們可以利用“監視伺服器”來幫助我們監視這個作業。

  第二步:日誌檔案傳送。

  當主伺服器把日誌備份好之後,主伺服器就會根據資料庫管理員的設定,把相關的日誌檔案自動傳送給輔助伺服器。在日誌檔案傳送的過程中,主要需要考慮兩個問題。

  一是多久傳送一次。一般情況下,對於資料庫高可用性要求比較高的話,則可以在主伺服器每次備份完事務日誌後,就傳送一次備份日誌檔案。不過,這要犧牲一定的網路頻寬。這主要是根據企業的實際情況來處理。像筆者的企業,由於是SAAS模式的資料庫租賃公司,所以,對於資料庫可用性的要求非常的高。主伺服器每次備份完成後,都會及時向輔助伺服器傳送備份日誌。以達到輔助伺服器與主伺服器之間資料的同步。

  二是做好日誌檔案傳送的監督工作。準確、準時的把主伺服器上的備份日誌檔案傳送到輔助伺服器上,這是輔助伺服器正常執行的前提。為了讓日誌傳送功能能夠正常的運轉,往往需要對日誌檔案的傳送工作進行監督。需要通過監視伺服器,來監視主伺服器有沒有把備份日誌準時的傳送出去;而輔助伺服器有沒有及時的接收備份日誌。若出現異常的話,監視伺服器需要利用訊息或者郵件的方式通知資料庫管理員。

  第三步:輔助伺服器還原事務日誌。

  當輔助伺服器收到主伺服器傳送過來的備份日誌後,就需要根據這個備份日誌還原資料庫。如此的話,當主伺服器出現故障後,輔助伺服器能夠馬上代替主伺服器進行工作。所以,即使主伺服器出現問題,使用者也很難察覺到。

  由於以上這三個作業都是通過計劃來排程的,所以,這個還原作業也可以通過作業系統的任務計劃來進行管理。對於輔助伺服器的還原頻率來說,需要資料庫管理員進行合理的設定。在管理過程中,主要的問題就是資料同步與資料庫設計管理方面的一個均衡問題。

  這是因為日誌傳送是按照時間表進行的,故在主伺服器與輔助伺服器之間有個時間差。主伺服器上的資料更改反映到輔助伺服器上會有時間延遲。這個延遲有好處也有壞處。好處就是這些延遲可以用作還原使用者錯誤的一種方法,因為可以延遲日誌檔案在輔助伺服器上的應用,從而資料庫管理員可以選擇不採用錯誤的配置。但是,壞處也是很明顯的。因為要通過日誌伺服器幫助資料庫的高可用性的一個前提,就是要提高輔助伺服器與主伺服器之間的資料同步效能。而資料延遲會降低這個同步性。

  所以,資料庫管理員需要綜合各種情形,來設定這個還原的頻率。筆者是把這個資料同步看得更重。故資料庫伺服器與輔助伺服器備份與還原的頻率設定為三分鐘。

  第四步:警報。

  警報雖然在日誌傳送中不是必須的,但其往往是日誌傳送正常執行的一個保障。他就好像是公路上的探頭,當以上三個作業出現什麼問題的時候,讓資料庫管理員可以馬上知道,從而及時的採取措施,挽回損失。

  具體的來說,需要對如下的作業進行監視。當出現不正常的情況時,及時通過資訊或者郵件的形式向資料庫管理員彙報。

  1、 主伺服器日誌備份出現問題。如當主伺服器延遲備份時,監視伺服器就需要向資料庫管理員報告相關的情況。

  2、 備份日誌傳送出現異常情況。如輔助伺服器沒有及時收到備份的日誌檔案,監視伺服器就會告知資料庫管理員。此時,資料庫管理員就需要去檢查,看看是網路的問題,還是主伺服器的問題。

  3、 還原情況的監視。輔助伺服器有沒有按時對資料庫進行還原;在還原的過程中有沒有出現意外情況,都要及時的告知資料庫管理員。如最常見的警報就是,當伺服器沒有按規定進行還原的時候,要觸發警報作業。

  二、日誌傳送的三個注意點。

  在配置日誌傳送功能的時候,需要注意三大問題。否則的話,資料庫管理員很可能無功而返。

  一是多個資料庫伺服器如何設定輔助伺服器。如筆者現在管理了九個資料庫伺服器,是否需要配備九個輔助伺服器呢?若能夠做到一對一的配置,那固然是好。但是,這浪費太嚴重。你若這麼部署的話,可能會被你公司的總經理掃地出門。一般來說,企業中只要配備一個輔助伺服器即可。因為很少會出現幾個資料庫主伺服器一起當機的情況。筆者現在的九個資料庫主伺服器,只配置了兩個輔助伺服器,就可以滿足資料庫日誌傳送的需求了。

  二是日誌傳送功能跟資料庫的群集不一樣。若採用群集功能,則當主資料庫伺服器出現故障的時候,系統會自動切換伺服器,讓輔助伺服器代替主伺服器來進行工作。但是,若利用日誌傳送功能的話,則無法達到這個目的。一般情況下,需要資料庫管理員進行手工的切換。如當主伺服器出現故障後,筆者預備的方案是,馬上把主伺服器從網路中撤下來,並且更改輔助伺服器的設定,讓其跟主伺服器的設定一樣。如此便不用更改客戶端的配置,使用者就可以連線到輔助伺服器了。不過由於不能夠自動進行切換,故資料庫管理員要對這個轉換方案進行測試。不能夠等到真的出現問題了,再臨時抱佛腳。

  三是頻率問題。由於日誌傳送的相關作業都是根據時間表來進行的。所以,資料庫管理員需要根據公司的情況,對這個時間進行合理規劃。因為頻繁的備份、傳送、還原會降低資料庫的效能。若企業對於可用性的要求不高,如可以允許一個小時的當機時間,則可以降低這個頻率。相反,像筆者這種從事應用軟體租賃的企業,客戶眾多。若資料庫出現故障的話,則會影響一大批使用者。為此,對於資料庫的可用性要求比較嚴格。所以,在這個頻率上,就設定得比較高。這個頻率沒有固定的參考標準。資料庫管理員要根據自己的企業的情況,結合自己的專業知識,做出合理的規劃。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-591033/,如需轉載,請註明出處,否則將追究法律責任。

相關文章