資料庫恢復資料庫
⑴ 資料庫恢復的資料庫恢復的三種方式
資料庫可能因為硬體或軟體(或兩者同時)的故障變得不可用,不同的故障情況需要不同的恢復操作。我們必須決定最適合業務環境的恢復方法。在資料庫中恢復有3種類型或方法,即應急(crash)恢復、版本(version)恢復和前滾(rool forward)恢復。 應急恢復用於防止資料庫處於不一致或不可用狀態。資料庫執行的事務(也稱工作單元)可能被意外中斷,若在作為工作單位一部分的所有更改完成和提交之前發生故障,則該資料庫就會處於不一致和不可用的狀態。這時,需要將該資料庫轉化為一致和可用的狀態。
為此,需要回滾未完成的事務,並完成當發生崩潰時仍在內存中的已提交事務。如在COMMIT語句之前發生了電源故障,則在下一次重新啟動並再次訪問該資料庫時,需要回滾到執行COMMMIT語句前的狀態。回滾語句的順序與最初執行時的順序相反。 這種恢復技術是版本恢復的一個擴展,使用完整的資料庫備份和日誌相結合,可以使一個資料庫或者被選擇的表空間恢復到某個特定時間點。如果從備份時刻起到發生故障時的所有日誌文件都可以獲得的話,則可以恢復到日誌上涵蓋到的任意時間點。前滾恢復需要在配置中被明確激活才能生效。
⑵ 資料庫中的數據刪除後還能恢復嗎
資料庫中的數據被刪除後,可以恢復。但至少需要滿足兩個條件:1、在誤刪之前,至少有完整備份之前的資料庫。
2、資料庫的恢復模式(Recoverymode)是「完整(Full)」。
只有滿足這兩個條件,才可以恢復資料庫中誤刪的數據。
針對這兩個前提條件,有三種方式可以恢復數據:
方式一:如果,這兩個前提條件都滿足,可以通過sql語句進行數據恢復,而且只需三步即可恢刪除的數據,無需第三方工具。
方式二:當不滿足第一個條件,而滿足第二個條件時,需要藉助第三方工具,才能恢復數據。
方式三:如果兩個條件都不滿足,數據則無法恢復。所以,一定將資料庫的恢復模式,調整為「完整(Full)」。
⑶ 在sql裡面把資料庫刪除了怎麼恢復
不同的資料庫有不同的恢復方式。
Oracle 11g之後有快閃記憶體回歸機制,在一定的時間內可以從快閃記憶體中恢復數據。
MySQL資料庫則在開啟了binlog日誌的情況下,可以通過binlog日誌恢復被刪除的數據。
⑷ 資料庫恢復的基本原理是利用什麼重建資料庫
重建資料庫時壓測環境沒有備份,但是另一套測試環境的表結構與壓測環境一致,只是數據有所差異,所以,獲取表結構比較容易。導入表結構沒有什麼好說明的地方,注意導入 SQL 的許可權和字元集。 重建表空間註:此小節對應恢復步驟的 。由於是整庫恢復,資料庫和表較多,所以使用腳本處理。大概的處理流程是,兩層循環,外層循環資料庫列表,內層循環對應資料庫表列表。然後依次 DISCARD TABLESPACE、拷貝對應庫對應表的 ibd 文件到對應目錄並更改許可權、IMPORT TABLESPACE。之前分析過,由於新舊的 ibd 文件表空間 id 不一致,導致不能正確導入。在 MySQL 錯誤日誌中記錄了表名、新舊表空間 id,接下來我們看看怎麼分解。 分析 MySQL 錯誤日誌註:此小節對應恢復步驟的和 。這一步很有意思。所有的資料庫表累計,不可能使用人工處理,我們得想點取巧的辦法。我們發現 MySQL 錯誤日誌記錄的表名、新舊表空間 id 很有規律,我們只需要依次取出這些值,問題就解決一大半了。
⑸ 怎麼恢復mysql資料庫怎麼恢復數據
簡單情況下:進入原來mysql安裝路徑下的data文件夾下,找到相應的庫和ibdata1,進行,就可回復原來的數據。
復雜情況下:
從另一台機上把MySQL資料庫的mysql文件夾拷貝到本地機上,目的是恢復本地機對數據的訪問和操作。經過如下幾種情況的操作。
1.
在本地重裝MySQL(安裝目錄D:\Program
Files\MySQL\MySQL
Server
5.0),直接把mysql文件夾拷貝至D:\Program
Files\MySQL\MySQL
Server
5.0\。結果,失敗:資料庫連接錯誤。
2.
卸載後重裝MySQL,將D:\Program
Files\MySQL\MySQL
Server
5.0\下的數據備份,只把mysql\data文件夾全部內容拷貝到D:\Program
Files\MySQL\MySQL
Server
5.0\data下。結果,失敗:資料庫連接錯誤。將備份的數據還完覆蓋。結果,失敗,還是連接不上資料庫。
3.
卸載後重裝MySQL,將mysql\data文件夾里的cf1,last文件夾(這兩個是原來MySQL里的資料庫)拷貝進D:\Program
Files\MySQL\MySQL
Server
5.0\data。連接成功,在Navicat
for
MySQL里看到資料庫cf1和last,但是不能訪問,因為數據全為零。明白了原來data里以資料庫命名的文件存儲的是資料庫的表結構,不是元數據。下一步,把data文件夾里的ibdata1文件(3.4G大,明顯存儲了元數據)拷貝到D:\Program
Files\MySQL\MySQL
Server
5.0\data里,代替原來的ibdata1文件。重啟電腦,打開Navicat
for
MySQL,連接成功,數據可以訪問操作。
至此,操作終於成功。其實當初在那台機上把數據導出來,而不是現在直接把文件夾mysql復制過來會更容易恢復。但那台機已經重裝了系統,也就是說MySQL失效了。
⑹ 如何恢復資料庫文件呢
要還原資料庫首先得後有資料庫的備份文件。
如果SQLSever2000沒有這個資料庫,你先建立一個空資料庫,記住這個資料庫的數據文件路徑和日子文件路徑,然後右鍵資料庫,點還原-選從設備-選擇設備(就是選資料庫的備份文件)-點選項-把剛才記的資料庫文件路徑和日誌文件路徑對應下面移至物理文件名弄好,選擇在現有資料庫庫上強制還原,點確定就OK了
⑺ 資料庫備份和恢復的作用和價值
資料庫備份和恢復的作用和價值主要體現在以下幾個方面:
1、提高系統的高可用性和災難可恢復性,在資料庫系統崩潰的時候,沒有資料庫備份就沒法找到數據。
2、使用資料庫備份還原資料庫是資料庫系統崩潰時提供數據恢復最小代價的最優方案,如果讓客戶重新填報數據,代價那就太大了。
3、沒有數據就沒有一切,資料庫備份就是一種防範災難於未然的強力手段,沒有了數據,應用再花哨也是鏡中花水中月。
⑻ 如何恢復資料庫
可是提交到伺服器之後,一切顯地都無比陌生。因為不熟悉SQL,准確來說就只會點Select,Update,Delete,Insert而已。昨天不小心誤刪了一張數據不多但是不在人工處理范圍內的一張表內的數據。因為知道SQL Server是有日誌這種東西的,事後我表現地無比淡定,在事發一個小時以內。一個小時之後,我發現我無法掌控這一事件了。上網查找了恢復數據的辦法。有必要啰嗦一下。 問題1:無論是遠程端還是伺服器端,都無法對資料庫(假設資料庫叫Test)進行除『增刪查改』的其它操作,譬如分離,離線,還原...錯誤提示是e.g.1 「無法分離 Test 資料庫 因為它當前正在使用。」e.g.2 「因為資料庫正在使用,未獲得對數據的排他訪問權,操作異常終止」反正嘛,就是說你丫不能阻止別人的訪問。可我們就是要這樣做的...只好跟它說拜拜了。 說拜拜的方法就是關掉所有訪問資料庫Test的進程。createproc killspid (@dbnamevarchar(20)) asbegindeclare@sqlnvarchar(500) declare@spidintset@sql='declare getspid cursor for select spid from sysprocesses where dbid=db_id('''+@dbname+''')'exec(@sql) open getspid fetchnextfrom getspid into@spidwhile@@fetch_status<>-1beginexec('kill '+@spid) fetchnextfrom getspid into@spidendclose getspid deallocate getspid end--用法use master exec killspid '資料庫名'PS:代碼我是這樣理解的,定義一段殺死訪問資料庫進程的存儲過程。寫一段獲取進程ID的代碼,循環殺死每一個進程。最後調用存儲過程。雖然不了解存儲過程,但是意思就是這樣的吧。 問題2:沒有備份資料庫,那該如何恢復數據呢有個軟體叫做Log Explorer 這個東西可以根據資料庫的日誌回到過去的任何一個時刻。View Code Log Explorer for SQL Server 是個好東西,但是這根本無法解決我的問題。資料庫在伺服器端,學校根本不會讓我安裝一個軟體在伺服器上面。而且我證實過,這個軟體必須要在伺服器端裝伺服器端軟體的。所以,這個對於我來說,是泡湯的。但是不代表這不是一個利器。 最後我用了一個很蛋疼的方法解決了。1.分離資料庫,備份一個Test;2.將資料庫附加回去,用自帶的恢復方式恢復到一個很久以前的狀態;3.將需要的那張表復制到備份的那個資料庫;4.將備份的那個資料庫掛回去,原資料庫刪了。 這是一個很蛋疼而且碰巧那張表沒被改的方法。頭一次知道DBA的重要性。我的方法是一個很偶然的東西,希望大家分享一下真正能解決恢復問題的辦法。當然,每隔一段時間備份是絕對沒有錯的。 方法 另外發現一個比較有技術性的可行的方法 1,如果誤操作之前存在一個全庫備份(或已有多個差異備份或增量備份),首先要做的事就是進進行一次日誌備份 (如果為了不讓日誌文件變大而置trunc. log on chkpt.選項為1那你就死翹了)backuplog dbName todisk='fileName'----注意:是日誌備份! 2,恢復一個全庫備份,注意需要使用with norecovery,如果還有其他差異或增量備份,則逐個恢復 restoredatabase dbName fromdisk='fileName'with norecovery 3,恢復最後一個日誌備份即剛做的日誌備份,指定恢復時間點到誤操作之前的時刻 restorelog dbName fromdisk='fileName'with stopat='date_time' 完整代碼View Code 經過驗證,這才叫有技術性!我那純屬「鄧艾的屯『田』」小孩子過家家。。。
⑼ 資料庫刪除數據了怎麼恢復
資料庫刪除了數據是一個很棘手的問題,數據的刪除首先包括三個層面:
1.刪除放入回收站,沒有在回收站中清除數據。這種情況是最簡單的,進入回收站,找到刪除的數據,右擊選擇恢復。
2.刪除後未放入回收站或者刪除後清空回收站,盡量先不要往原數據所在盤符下儲存內容,剛剛刪除的數據只是文件結構被刪除,真正的文件數據還沒被覆蓋。通過數據恢復軟體是可以找回來的,專業的軟體例如有超級兔子數據恢復軟體。
3.如果是刪除很久以後才想到資料庫數據要恢復,並且磁碟一直在使用,磁碟被填滿的話數據就已經被覆蓋了,這樣的數據是無法找回的。
⑽ 資料庫分離後,如何還原
1.選擇源資料庫工具會自動顯示該資料庫之前的一些備份,然後直接選擇需要還原的資料庫備份集。
2.選擇源設備點擊後面的,添加需要還原的資料庫文件。
3.點擊確認還原資料庫