使用日誌轉移代替集群來提供較高的可用性

2021-04-15 08:14:51 字數 1370 閱讀 4389

集群是一種實現高可用性的有效解決方案,有時它會適得其反。而且,它還非常昂貴。因此,資料庫管理員可使用日誌轉移代替集群來提供較高的可用性。

日誌轉移是這樣一種處理過程,它能將某一資料庫中的事務日誌檔案依次轉存到備份的資料庫中,進而為這一資料庫建立乙個「近乎」熱備份。sql server 2000的資料庫引擎中設定了日誌轉移功能,並在其中進行處理。所以它會自動完成復原到備份伺服器的程序,而不需要資料庫管理員手動操作。只有你的產品伺服器操作失敗,你才需手動完成到備份伺服器的復原程序。(注釋:儘管sql server 7.0和2005中均有日誌轉移功能,但本文主要針對sql server 2000。)

為什麼要使用日誌轉移?

日誌轉移是一種解決高可用性的措施,並且十分有效。同樣作為高可用性的措施方案,日誌轉移相對集群來說,最大的好處是它要便宜許多。這是因為,使用集群功能有硬體要求,而日誌轉移則不需要。

日誌轉移在資料庫與資料庫而非伺服器與伺服器之間進行;因此才有可能將備份資料庫儲存在你已用作其他用途的伺服器上。但如果轉移失敗則有可能會出現問題,這時你可換用備份資料庫,這種選擇是可用的。

日誌轉移相對比較容易安裝。sql server提供了非常完善的嚮導幫助你安裝這個程序。

日誌轉移允許你儲存分布在不同地理位置中的冗餘資料,sql server的集群功能則很難做到這一點。這一特點十分出眾,因為,當你的資料中心遭到災難時,你仍能在備份伺服器中將其恢復過來。而在相同的資料中心,如果你使用的是集群功能,你就會陷入麻煩。

日誌轉移的另一優點是你能將備份資料庫作為報告資料庫使用,這對許多公司來說是很不錯的選擇。但如果你決定了用這個備份資料庫作報告使用,就必須注意它的侷限性。使用原始資料庫中的日誌時,sql server 要求指定唯一的通道,所以,當日誌檔案正在被應用時,報告則不能同時進行。

使用日誌轉移要考慮的相關因素

在將日誌轉移作為高可用性的方案來使用時,我們必須考慮以下幾點因素。由於從原始資料庫到備份資料庫有乙個潛伏期,對你的公司而言,它並非一定是可行的實現高可用性的一種解決方案。潛伏期由資料庫管理員設定,時間也因需要而縮短, 但永遠不能避免。

日誌轉移中沒有設定恢復功能,這就意味著在將日誌轉移到備份伺服器上時,這些日誌都暫時不可用。因此,資料庫管理員必須在將備份資料庫放到網上前完成一系列的操作,這些步驟包括:

將已儲存在備份資料伺服器上原始資料庫裡的備份標籤儲存起來。一旦所有的標籤被儲存後,資料庫就必須得到恢復,然後放到網上。

一旦所有的資料庫都已放在網上,所有需要訪問資料庫的應用程式就需要改變自身的鏈結。如果你不能將應用程式盡快指向剛剛恢復的資料庫,你就前功盡棄了。

乙個sql server的例項能用於監控日誌轉移。這個例項可以在原始資料庫、備份資料庫或單獨的資料庫中。任何一種版本的sql server都能用於sql server監控。

注釋:資料庫登入必須在原始資料庫與備份資料庫之間同時進行。

使用列舉enum來代替if else

在平時的 中,if else肯定是必不可少,但是有時使用if else卻不是 的最好選擇,下面介紹下平時會在實際工作 中使用到的用enum來代替if else的寫法.現在有個需求,我們公司有vip等級,1,2,3,根據等級高低,能獲取不同的優惠資訊,最簡單也最容易想到的 是 獲取折扣資訊 publi...

使用函式指標來代替switch case

include intmain return1 include void printffunc0 void printffunc1 void printffunc2 void printffunc3 void printffunc4 void printffunc5 void pfunc 6 定義乙...

使用Builder模式代替來建立例項

引入 考慮有這樣乙個類的設計,它用來表示包裝食品外面的營養標籤,包含以下內容 每罐的含量 servingsize 營養品的種類 servings 卡路里 calories 脂肪含量 fat 鈉含量 sodium 糖含量 carbohydrate 其中前兩個是必須的,後面幾項是可選的。對於這樣的類,應...