<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      淺談SQL Server中的事務日志(五)----日志在高可用和災難恢復中的作用

      本篇文章是系列文章中的第五篇,是對前一個日志系列的補充篇。如果您對日志的基本概念還沒有一個比較系統(tǒng)的了解,可以參看本系列之前的文章:

      淺談SQL Server中的事務日志(一)----事務日志的物理和邏輯構架

      淺談SQL Server中的事務日志(二)----事務日志在修改數(shù)據(jù)時的角色

      淺談SQL Server中的事務日志(三)----在簡單恢復模式下日志的角色

      淺談SQL Server中的事務日志(四)----在完整恢復模式下日志的角色

       

      簡介

          日志的作用是保證持久性和數(shù)據(jù)一致性,通過日志可以實現(xiàn)數(shù)據(jù)的Undo與Redo,因此通過日志,SQL Server不僅僅可以實現(xiàn)災難恢復,還可以通過日志的Redo來實現(xiàn)高可用性。本篇文章主要講述日志在SQL Server中提供的幾種高可用性中的作用以及在災難恢復中的角色。

       

      日志損壞

          日志可能會由于IO子系統(tǒng)的故障而損壞,當出現(xiàn)日志損壞時,如果您對日志的原來略有了解,并能在日志損壞的情況下盡量挽救數(shù)據(jù),那么感覺一定是非常好的:-),下面我們來了解幾種日志損壞的情況下的恢復情況。

       

      1.數(shù)據(jù)庫正常關閉,日志損壞。

          當數(shù)據(jù)庫正常關閉時,日志損壞就不是那么重要了,因為此時數(shù)據(jù)庫中所有提交的事務對應的臟數(shù)據(jù)都已經(jīng)CheckPoint到物理磁盤,因此不存在數(shù)據(jù)不一致的問題。因此,如果MDF和NDF文件完好,直接指定 FOR ATTACH_REBUILD_LOG參數(shù)后附加即可,如圖1所示。

      1

      圖1.如果數(shù)據(jù)庫正常關閉,直接附加即可

       

          但值得注意的是,使用該方式附加數(shù)據(jù)庫會自動重建日志文件,日志文件大小為0.5MB,也就是2個VLF,自動增長為10%,因此您需要手動再來設置一下日志的大小,避免出現(xiàn)太多VLF的情況。

       

      2.數(shù)據(jù)庫非正常關閉,日志損壞

          在講述這種情況之前,我們首先來看數(shù)據(jù)庫所能處在的幾種狀態(tài),一個完整的模型如圖2所示。

          2

          圖2.數(shù)據(jù)庫所能處在的狀態(tài)關系

         

          上面的幾種狀態(tài)的具體轉換關系超出了本文的討論范圍,但是這里我會強調兩種和日志損壞關系很大的狀態(tài):RECOVERY_PENDING和SUSPECT狀態(tài)。

          假如出現(xiàn)了數(shù)據(jù)庫沒有正常關閉,也就是還有數(shù)據(jù)沒有CheckPoint到磁盤,如果數(shù)據(jù)庫要啟動就必須經(jīng)歷Recovery過程,如果日志損壞,則無法進行該Recovery過程,就會造成數(shù)據(jù)不一致的問題。

          此時,數(shù)據(jù)庫可能處于下面兩種狀態(tài)之一:

      • RECOVERY_PENDING:需要運行crash recovery,但該過程由于資源等待無法開始,比如說日志完全損壞
      • SUSPECT:crash recovery已經(jīng)開始,但無法完成

       

          因此處理該類情況要基于您所在的業(yè)務環(huán)境是否允許數(shù)據(jù)損失,可以選擇從備份中恢復數(shù)據(jù),或是將數(shù)據(jù)庫狀態(tài)改為EMERGENCY。EMERGENCY模式意味著數(shù)據(jù)庫跳過crash recovery階段,此時雖然可以訪問數(shù)據(jù)庫,但是會存在數(shù)據(jù)事務不一致的問題,如果僅僅是某些數(shù)據(jù)頁不一致還好,但如果是對表結構修改的事務存在,那就可能存在數(shù)據(jù)庫架構不一致的問題。如果您沒有合適的備份集,那只能通過該方式來恢復數(shù)據(jù)。將數(shù)據(jù)庫設置為EMERGENCY模式非常簡單,如代碼清單1所示。

      ALTER DATABASE AdventureWorks2012 SET EMERGENCY

      代碼清單1.將數(shù)據(jù)庫設置為緊急模式

       

          與該模式有關的一個選項是REPAIR_ALLOW_DATA_LOSS,該選項依然會執(zhí)行crash recovery過程,但會跳過受損的日子,從而盡可能的修復數(shù)據(jù)一致性問題,該選項會創(chuàng)建一個新的日志文件,最后使得數(shù)據(jù)庫處于ONLINE狀態(tài),使用該選項的一個簡單例子如代碼清單2所示。

      ALTER DATABASE AdventureWorks2012 SET SINGLE_USER
       
      DBCC CHECKDB(AdventureWorks2012,REPAIR_ALLOW_DATA_LOSS)

      代碼清單2.使用REPAIR_ALLOW_DATA_LOSS選項

       

          值得注意的是,作為DBA永遠是要有“備”無患,上面這些操作是在您準備工作不充分的情況下才要去考慮的。

       

      3.數(shù)據(jù)庫處于在線狀態(tài),日志損壞

          在這種情況下,如果SQL Server在運行時需要使用的日志損壞(比如說回滾時),則SQL Server會將數(shù)據(jù)庫下線,并轉為SUSPECT模式。

          同樣如果沒有備份的話,只能考慮使用EMERGENCY模式。

          還有一種方式是,將數(shù)據(jù)庫的恢復模式改為簡單,然后手動發(fā)起一個CheckPoint來截斷日志,最后再將數(shù)據(jù)庫改回完整恢復模式。但這種方式會破壞日志鏈。但可能會將被損壞的日志清除掉。

       

       

      日志在高可用性中的作用

       

      鏡像與AlwaysOn

          這兩種高可用性技術都是基于日志來維護一個數(shù)據(jù)庫的副本。通過將日志實時的傳送到副本,在副本上來不斷的進行REDO操作,就可以保證主體和副本數(shù)據(jù)庫之間的實時同步。

          對于鏡像來說,可以同步或異步將日志傳送的1個副本。

          而對于AlwaysOn可用性組來說,就可以將日志最多同步到2個副本+異步到2個副本(據(jù)說SQL Server 2014已經(jīng)將該特性翻倍,也就是最多可以4個同步副本和最多4個異步副本,但目前還沒有發(fā)布,所以只是小道消息)。

          所謂的同步概念就是主副本只有將傳送的日志發(fā)送到輔助副本之后,由輔助副本返回ACK信息后,才能夠在本地提交,因此可能會造成明顯的延遲并影響性能。這里還值得注意的是,主副本不是等待事務在輔助副本提交之后才能提交,而是只是需要收到輔助副本返回的收到日志的ACK信息即可。

          無論對于上面兩種高可用特性,無論是哪一種,都需要考慮監(jiān)控發(fā)送隊列和REDO隊列。發(fā)送隊列過長意味著當故障轉移時,可能丟失大量數(shù)據(jù),同時還會阻止日志截斷。REDO隊列過長意味著當故障轉移時,RECOVERY截斷將會消耗更多的時間,從而使得故障轉移消耗的宕機時間延長。這兩種隊列的監(jiān)控都可以使用性能監(jiān)視器進行,如圖3所示。

      3

      圖3.監(jiān)控隊列的計數(shù)器

       

      事務日志傳送

          相比其他高可用性功能來說,事務日志傳送功能比較簡單。本質上就是一個不斷備份、傳送、還原日志的過程。使用事務日志傳送對于測試日志是否有效來說非常合適。

          事務日志傳送還有一點值得注意的地方就是,當有批量操作的時候,考慮使用大容量事務日志模式,從而避免大量的日志通過網(wǎng)絡傳輸。

          事務日志對于維護一個數(shù)據(jù)庫冗余的副本來說是最簡單的方式,雖然不能保證數(shù)據(jù)實時,但對于特定業(yè)務場景還是非常有意義的。

       

      事務復制

          與前幾種高可用性特性不同的是,事務日志無法直接傳送事務日志。因為發(fā)布端和訂閱端數(shù)據(jù)庫的結構可以完全不一樣,訂閱端可以僅僅訂閱一個或多個表,表中的一部分列,或是一部分數(shù)據(jù)子集。由于發(fā)布端和訂閱端的表結構和數(shù)據(jù)不一致,因此無法直接將發(fā)布端的日志傳送到訂閱端。

          因此事務復制的原理是Log Reader Agent定期讀取發(fā)布端的日志,匯總日志對發(fā)布內容的更改,從而將這些更改變?yōu)檫壿嫴僮鳎瑥亩沟糜嗛喍丝梢訰eplay這些操作來打到數(shù)據(jù)同步的目的。

          這里值得注意的是,如果Log Reader Agent還沒有掃描最新的修改,事務復制可能造成發(fā)布端的日志無法截斷。

       

       

      小結

          本篇文章作為對前面四篇文章的補充,講述了日志在災難恢復和高可用性中的原理和作用。這些原理對于設計一個好的備份計劃、高可用性計劃來說,是必不可少的。

      posted @ 2013-06-16 13:19  CareySon  閱讀(7766)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 日本一区二区国产在线| 久久久久噜噜噜亚洲熟女综合 | 欧美日韩视频综合一区无弹窗| 国产视频一区二区三区麻豆| 欧美丰满熟妇乱XXXXX网站| 天堂网在线.www天堂在线资源| 国产一区二区三区在线观看免费| 国产精品一区二区久久岳| 国产精品午夜av福利| AV最新高清无码专区| 在线看片免费人成视久网| 99国产精品永久免费视频| 国产一区二区三区四区五区加勒比 | 亚洲人成小说网站色在线| 三级国产在线观看| 国产99久久无码精品| 日韩av高清在线看片| 国产成人欧美一区二区三区 | 在线视频精品中文无码| 国产精品一区二区不卡91| 中文字幕精品亚洲二区| 国内精品久久久久影院网站| 国产自产av一区二区三区性色| 日本高清视频网站www| 午夜性刺激在线观看| 蜜臀91精品高清国产福利| 在线 国产 欧美 专区| 岛国岛国免费v片在线观看| 国产乱码精品一区二区三上| 久久99精品久久久久久青青| 精品91在线| 国内精品无码一区二区三区| 江孜县| 国产精品美女一区二区三| 日本夜爽爽一区二区三区| 亚洲色在线v中文字幕| 免费无码观看的AV在线播放 | 无码尹人久久相蕉无码| 亚洲乱妇老熟女爽到高潮的片| 人人妻人人做人人爽夜欢视频 | 国产婷婷综合在线视频中文|