利用資料庫日誌恢復資料到時間點的操作

2021-03-31 08:56:58 字數 1134 閱讀 9677

可能有不少朋友遇到過這樣的問題:

update或delete語句忘帶了where子句,或where子句精度不夠,執行之後造成了嚴重的後果,這種情況的資料恢復只能利用事務日誌的備份來進行,所以如果你的sql沒有進行相應的全庫備份或不能備份日誌(truncate log on checkpoint選項為1),那麼就無法進行資料的恢復了,或者只能恢復到最近一次的備份的資料了。

以下簡單說明恢復資料方法:

1,如果誤操作之前存在乙個全庫備份(或已有多個差異備份或增量備份),首先要做的事就是進進行一次日誌備份(如果為了不讓日誌檔案變大而置trunc. log on chkpt.選項為1那你就死翹了)

backup log dbname to disk='filename'

2,恢復乙個全庫備份,注意需要使用with norecovery,如果還有其他差異或增量備份,則逐個恢復

restore database dbname from disk='filename' with norecovery

3,恢復最後乙個日誌備份即剛做的日誌備份,指定恢復時間點到誤操作之前的時刻

restore log dbname from disk='filename'

with stopat='date_time'

以上這些操作都可以在sql server企業管理器裡完成,難度不大。。。

當然,如果誤操作是一些不記日誌的操作比如truncate table,select into等操作,那麼是無法利用上述方法來恢復資料的...

f. 使用 stopat 語法還原到即時點和使用多個裝置進行還原

下例將資料庫還原到其在 1998 年 4 月 15 日中午 12 點時的狀態,並顯示涉及多個日誌和多個備份裝置的還原操作。

restore database mynwind

from mynwind_1, mynwind_2

with norecovery

restore log mynwind

from mynwindlog1

with norecovery

restore log mynwind

from mynwindlog2

with recovery, stopat = 'apr 15, 1998 12:00 am'

注意日期格式

從日誌中恢復SQL Server資料庫到時間點

db2中可以使得資料庫回覆到指定的時間點,sql server資料庫的recovery model為full 或者bulk copy的時候,是可以從日誌來恢復資料庫的。實際上日誌中記錄的一條一條的transact sql語句,恢復資料庫的時候會redo這些sql語句。前提條件 mybbs是資料庫te...

通過日誌恢復資料庫

建立測試資料庫test create database test onprimary name test data.mdf filename d test data.mdf logon name test data.ldf filename d test data.ldf 建立測試表 create ...

利用binlog來恢復資料庫

開發庫和線上表結構有很多不一樣,分表個數也不同,我需要重新整理保持開發庫和線上一致,之前已經告知開發資料是否允許丟失,開發說資料可以不要了,直接丟掉,等我搞好之後開發告訴我部分資料 ring 是不能刪除的,我暈,只好想辦法來恢復資料了,沒有備份,不過還好有全部的binlog。1.根據binlog解析...