none
有關還原時,遇到LSN距離太近的問題 RRS feed

  • 問題

  • hi...各位好

     

    今天在做restore遇到一個問題,說明如下:

     

    0.先有一堆交易發生

     

    1.之後執行這句

      backup log credit to disk='d:\credit_log5.bak' with norecovery---->成功

     

    2.接著執行這句

       restore database credit from disk='d:\credit.bak' with norecovery---->成功

     

    3.最後執行這句

      restore log credit from disk='d:\credit_log5.bak' with  recovery

      結果出現這樣的error:

     

    訊息 4305,層級 16,狀態 1,行 1
    這個備份組的記錄從 LSN 375000000014500001 開始,但距離目前太近,無法套用至資料庫。請改用較早期且含有 LSN 250000000207800001 的記錄備份進行還原。
    訊息 3013,層級 16,狀態 1,行 1
    RESTORE LOG 正在異常結束。

     

    我發現時間點似乎是個影響的關鍵,而談到有關LSN,似乎又是一個課題

    不知各位是否能幫忙說明一下這個問題,或是概略談一下LSN,似乎系統不讓我用最近的交易記錄檔備分

    (我試過如果用早一點的交易記錄檔是OK的),但若是這樣,似乎不能還原到最新的狀況,該怎麼辦??

    非常感謝各位

     

     

     

    2007年12月31日 上午 10:18

解答

  • 由於你沒有提到更先前的操作是什麼,亦即不知道你先前進行了哪些備份的動作,就目前所看到的資訊來猜測可能的操作:在完成資料庫的完整備份之後,你又進行了數次的差異備份與(或)記錄備份。

     

    而當你在還原資料庫時,先還原完整備份,然後就直接使用最後一次的差異備份(或記錄備份)之資料進行還原,這樣當然不行,要依序還原:先還原在完整備份之後的第一次差異備份(或記錄備份),然後是第二次的差異備份(或記錄備份),以此類推。

     

    至於 LSN 的參考資料:

    記錄序號簡介

    2008年1月2日 下午 12:38
    版主

所有回覆

  • 由於你沒有提到更先前的操作是什麼,亦即不知道你先前進行了哪些備份的動作,就目前所看到的資訊來猜測可能的操作:在完成資料庫的完整備份之後,你又進行了數次的差異備份與(或)記錄備份。

     

    而當你在還原資料庫時,先還原完整備份,然後就直接使用最後一次的差異備份(或記錄備份)之資料進行還原,這樣當然不行,要依序還原:先還原在完整備份之後的第一次差異備份(或記錄備份),然後是第二次的差異備份(或記錄備份),以此類推。

     

    至於 LSN 的參考資料:

    記錄序號簡介

    2008年1月2日 下午 12:38
    版主
  • 懂了,非常謝謝您

    那假設中間有三個交易記錄備份

    我應該可以把一,二個用 with norecovery

    而最後一個用with recovery

    對吧???

     

     

    2008年1月9日 上午 03:11
  • 是可以這樣操作,不過一般會使用 with recovery 的選項來還原所有的記錄,然後最後再用 with recovery 來還原資料庫,這當然要看你備份的選項與策略而定

     

    2008年1月9日 下午 04:15
    版主
  •  

    謝謝您

    因為跟原本觀念有些差異,所以冒昧請教一下

    如果備份策略是

    每周完整備份

    每天差異備份

    每6 小時交易記錄備份

    我以為還原時,一定由範圍最大(完整備份)開始,並且使用with norecovery

    而一直到最後一個交易記錄,才使用with recovery

     

    如果您提的例子:

    一般會使用 with recovery 的選項來還原所有的記錄,然後最後再用 with recovery 來還原資料庫

    這種情況下一般策略是如何啊??

    您的意思是,可以先還原交易記錄with recovery,最後再還原完整備份wiht recovery,是這個意思嗎??

    可能我觀念錯誤,還希望您幫我釐清一下,非常感謝您

     

    2008年1月10日 上午 09:16
  •  tim_hsu 寫信:
    一般會使用 with recovery 的選項來還原所有的記錄,然後最後再用 with recovery 來還原資料庫

    這種情況下一般策略是如何啊??

    您的意思是,可以先還原交易記錄with recovery,最後再還原完整備份wiht recovery,是這個意思嗎??

    可能我觀念錯誤,還希望您幫我釐清一下,非常感謝您

    一言以蔽之,使用 with recovery 還原交易記錄或完整備份之後,此時的資料庫就能夠立即被存取

     

    反之使用 nocovery 選項,就表示一定還要繼續還原後續的交易記錄或備份的資料庫才行,當然還原到最後一個交易記錄或備份的資料庫就要用 recovery 或是其他可以讓資料庫被存取的選項(例如:restart)

    2008年1月10日 下午 03:08
    版主
  •  

    您好,你講的這個觀念我明白

    但我的問題點是:

     

    我真的可以先還原交易記錄with recovery,例:

    restore log AdventureWorks from disk='D:\aaa.bak' with recovery

    然後再還原完整備份:例

    restore database AdventureWorks from disk='D:\AdventureWorks.bak' with recovery

     

    真的可以這樣嗎....這樣的策略或排程通常是如何

    小弟不才,還請您指導,謝謝您

     

    2008年1月11日 上午 02:17