資料庫誤刪恢復
A. 資料庫被刪除了怎麼恢復
恢復步驟:
1、運行EasyRecovery。
2、選擇「DeletedRecovery」。
3、選擇資料庫文件所在的驅動器,在「File Filter」中輸入*.mdf|*.ldf,選擇「Next」。
4、在左側窗口會列出被刪除的資料庫文件,選擇所要恢復的資料庫文件,選擇「Next」。
5、在「Recover to Local Drive」中選擇恢復後的文件存放的路徑,要選擇與原資料庫文件不同的路徑,選擇「Next」。
6、文件被恢復後,將恢復的文件復制到原資料庫文件位置,並在企業管理器通過附加資料庫,將恢復的文件恢復到sql Server中。
註:如果刪除的資料庫文件所有的存儲區域被寫過了,就無法恢復了,所以刪除與恢復的時間間隔越短越好。
B. 資料庫中的數據刪除後還能恢復嗎
資料庫中的數據被刪除後,可以恢復。但至少需要滿足兩個條件:1、在誤刪之前,至少有完整備份之前的資料庫。
2、資料庫的恢復模式(Recoverymode)是「完整(Full)」。
只有滿足這兩個條件,才可以恢復資料庫中誤刪的數據。
針對這兩個前提條件,有三種方式可以恢復數據:
方式一:如果,這兩個前提條件都滿足,可以通過SQL語句進行數據恢復,而且只需三步即可恢刪除的數據,無需第三方工具。
方式二:當不滿足第一個條件,而滿足第二個條件時,需要藉助第三方工具,才能恢復數據。
方式三:如果兩個條件都不滿足,數據則無法恢復。所以,一定將資料庫的恢復模式,調整為「完整(Full)」。
C. 資料庫中的數據誤刪,又沒有進行備份,怎樣恢
打開mysql的bin log功能:
對於mysql也是支持增量備份,但要打開mysql的bin log功能。
我們修改mysql的配置文件。linux是/etc/my.cnf,windows是mysql的安裝目錄/my.ini
我們在[mysqld]下面加上log-bin一行代碼,如下面。
[mysqld]
log-bin=mysql-bin
復制代碼
加完後重起mysql即可。
某客戶更新數據的時候,誤刪了資料庫的內容,因為資料庫做了主從,但是沒有做備份(備份很重要啊!)幸好開啟了bin-log,之後只好把整個日誌的記錄拿回來本地進行恢復。
之後自己也做了一個簡單的測試,對數據進行恢復,具體如下:
1、新建一個表
CREATE TABLE `lynn`.`sn_test` ( `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , `age` INT( 3 ) NOT NULL ) ENGINE = MYISAM;
2、插入多條數據
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('和納lynn1', '1');
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn2', '2');
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn3', '3');
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn4', '4');
3、查看數據並刪亂棚叢除
mysql> select * from sn_test;
+-------+-----+
| name | age |
+---------+---+
| lynn1 | 1 |
| lynn2 | 2 |
| lynn3 | 3 |
| lynn4 | 4 |
+---------+-----+
4 rows in set (0.00 sec)
mysql> delete from sn_test;
Query OK, 4 rows affected (0.00 sec)
mysql> select * from sn_test;
Empty set (0.00 sec)
4、mysqlbinlog恢復數據
mysqlbinlog mysql-bin.000006 > 1.sql
查看1.txt裡面數據插入的紀錄,把刪除之前的數據進行恢復
mysqlbinlog mysql-bin.000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123
重新登錄,查看數據,OK,已經成功恢復了
對於資料庫操作,應該注意如下問題:
1、要常備份(全備,增量備份),出了問題可以最快恢復數據;
2、操作資料庫前,要嘩櫻把需要操作的資料庫或者表mp出來;
3、需要把bin-log打開,就算沒有做上面的兩步,也可以通過日誌恢復數據
D. sqlserver資料庫表數據誤刪除了 怎麼恢復
恢復sqlserver資料庫表數據步驟如下:
一、心態:
1、務必冷靜,事情已經發生不可慌亂。
2、立即查看當前時間,最好能夠精確到秒,並做記錄。
3、應立即向直接上級反映此事,不可隱瞞,防止事態擴大。
4、如果許可權允許,應當立即停止相關應用,防止有新的數據寫入資料庫。
二、恢復:
1、構建新資料庫以及寫入一些數據
如果查詢發現數據不是你想要的,那麼可以重復上述的操作,從備份事務日誌開始,然後最後選擇時間點的時候在縮小范圍。
E. Mysql Innodb資料庫誤刪除了文件,怎麼恢復
經常性備份,如果binlog在的話,試試看……
- 恢復策略
前面說到未提交的事務和回滾了的事務也會記錄Redo Log,因此在進行恢復時,這些事務要進行特殊的的處理.有2中不同的恢復策略:
A. 進行恢復時,只重做已經提交了的事務。
B. 進行恢復時,重做所有事務包括未提交的事務和回滾了的事務。然後通過Undo Log回滾那些未提交的事務。
- InnoDB存儲引擎的恢復機制
MySQL資料庫InnoDB存儲引擎使用了B策略, InnoDB存儲引擎中的恢復機制有幾個特點:
A. 在重做Redo Log時,並不關心事務性。 恢復時,沒有BEGIN,也沒有COMMIT,ROLLBACK的行為。也不關心每個日誌是哪個事務的。盡管事務ID等事務相關的內容會記入Redo Log,這些內容只是被當作要操作的數據的一部分。
B. 使用B策略就必須要將Undo Log持久化,而且必須要在寫Redo Log之前將對應的Undo Log寫入磁碟。Undo和Redo Log的這種關聯,使得持久化變得復雜起來。為了降低復雜度,InnoDB將Undo Log看作數據,因此記錄Undo Log的操作也會記錄到redo log中。這樣undo log就可以像數據一樣緩存起來,而不用再redo log之前寫入磁碟了。
包含Undo Log操作的Redo Log,看起來是這樣的:
記錄1: <trx1, Undo log insert <undo_insert …>>
記錄2: <trx1, insert …>
記錄3: <trx2, Undo log insert <undo_update …>>
記錄4: <trx2, update …>
記錄5: <trx3, Undo log insert <undo_delete …>>
記錄6: <trx3, delete …>
C. 到這里,還有一個問題沒有弄清楚。既然Redo沒有事務性,那豈不是會重新執行被回滾了的事務?確實是這樣。同時Innodb也會將事務回滾時的操作也記錄到redo log中。回滾操作本質上也是對數據進行修改,因此回滾時對數據的操作也會記錄到Redo Log中。
一個回滾了的事務的Redo Log,看起來是這樣的:
記錄1: <trx1, Undo log insert <undo_insert …>>
記錄2: <trx1, insert A…>
記錄3: <trx1, Undo log insert <undo_update …>>
記錄4: <trx1, update B…>
記錄5: <trx1, Undo log insert <undo_delete …>>
記錄6: <trx1, delete C…>
記錄7: <trx1, insert C>
記錄8: <trx1, update B to old value>
記錄9: <trx1, delete A>
一個被回滾了的事務在恢復時的操作就是先redo再undo,因此不會破壞數據的一致性.
- InnoDB存儲引擎中相關的函數
Redo: recv_recovery_from_checkpoint_start()
Undo: recv_recovery_rollback_active()
Undo Log的Redo Log: trx_undof_page_add_undo_rec_log()
F. navicat for mysql 誤刪資料庫怎麼恢復
navicat for mysql 誤刪資料庫怎麼恢復
重新創建則知一個敗升資料庫
找到最近一次完整備份,導入完整備份
打開最近一次完整備份到你要恢復點的binlog,前孫枯消提是打開log-bin
根據時間點,執行binlog日誌,恢復到你所要的恢復點
binlog操作方法
G. SQL資料庫里的表誤刪除要怎麼恢復
1、實現運行Recovery for SQL Server操作如下。