以下情況可以恢復(fù)數(shù)據(jù):

目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、文圣網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
1
innodb引擎表開(kāi)啟了事務(wù),執(zhí)行dml語(yǔ)句,比如delete、update、insert之類(lèi),并且沒(méi)有提交即commit操作的話(huà),可以執(zhí)行rollback進(jìn)行回滾恢復(fù)。如果是ddl操作,如drop、create、alter之類(lèi)的操作時(shí)無(wú)效的
2
在進(jìn)行刪除操作之前有備份,比如mysqldump,物理備份數(shù)據(jù)文件之類(lèi)的操作,那么可以恢復(fù)到刪除前的數(shù)據(jù)
3
如果你的刪除操作是直接對(duì)data下的文件進(jìn)行刪除,注意,不是粉碎文件操作,那么你可以嘗試用磁盤(pán)恢復(fù)軟件來(lái)找回被誤刪的數(shù)據(jù)文件;
除以上情況,其他真的是沒(méi)法恢復(fù)了,不過(guò)貌似很多公司號(hào)稱(chēng)能夠恢復(fù),要收費(fèi),具體他們?cè)趺椿謴?fù)我就不曉得了。
1 找個(gè)別的機(jī)器安裝個(gè)同版本的mysql或從已安裝同版本的其他機(jī)器上(非同版本的也可以試下):
拷貝 mysql/data/mysql 目錄到你的mysql/data/ 下吧
2 試著啟動(dòng)mysql服務(wù),如果能啟動(dòng)了,理論上應(yīng)該丟失的只有用戶(hù)、授權(quán)等一些系統(tǒng)信息,不影響你的使用的數(shù)據(jù);
如果不能啟動(dòng),看錯(cuò)誤日志,爭(zhēng)取啟動(dòng)了。
3 趕緊把數(shù)據(jù)備份一份出來(lái),重新把所有庫(kù)(只是你后來(lái)創(chuàng)建的業(yè)務(wù)相關(guān)的庫(kù),不包括mysql庫(kù))都刪了,重新導(dǎo)入一遍。理論上不這樣也可以,但只是非生產(chǎn)重要的環(huán)境下。
4 重新做用戶(hù)授權(quán)。
恢復(fù)整個(gè)數(shù)據(jù)庫(kù)首先,如果要恢復(fù)的數(shù)據(jù)庫(kù)是含有授權(quán)表的mysql數(shù)據(jù)庫(kù),將需要使用--skip-grant-tables選項(xiàng)運(yùn)行服務(wù)器。否則,服務(wù)器將抱怨無(wú)法找到授權(quán)表。在恢復(fù)表之后,執(zhí)行mysqladmin flush-privileges 來(lái)告訴服務(wù)器加載授權(quán)表,并用它們啟動(dòng)。將原數(shù)據(jù)庫(kù)目錄的內(nèi)容拷貝到其他的地方。例如,您可能會(huì)在稍后用它們進(jìn)行崩潰表的事后分析檢查(post-mortem examination)。用最新的備份文件重新加載數(shù)據(jù)庫(kù)。如果您打算使用由mysqldump 加載的文件,則需要將它們作為mysql的輸入。如果打算使用從數(shù)據(jù)庫(kù)中直接拷貝的文件(如,用tar 或c p),則將它們直接拷貝回到該數(shù)據(jù)庫(kù)目錄中。但是,在這種情況下,應(yīng)該在拷貝這些文件之前關(guān)閉服務(wù)器,然后再重新啟動(dòng)它。用更新日志重做在進(jìn)行備份后又修改了數(shù)據(jù)庫(kù)表的查詢(xún)。對(duì)于所有可用的更新日志,可使用它作為mysql的輸入。指定--one-database 選項(xiàng),使mysql只對(duì)想要恢復(fù)的數(shù)據(jù)庫(kù)執(zhí)行查詢(xún)。如果您知道需要使用所有的更新日志文件,可在包含日志的目錄中使用下列命令:% ls-t-r-l update.(0-9)* | xargs cat | mysql--one-database db_namels 命令產(chǎn)生更新日志文件的單列列表,更新日志文件根據(jù)服務(wù)器生成的順序進(jìn)行排序(要知道,如果您修改了其中的任何文件,排序的順序都將改變,這將導(dǎo)致更新日志按錯(cuò)誤的順序使用)。您很可能必須使用某些更新日志。例如,如果自備份以來(lái)所產(chǎn)生的日志命名為update.392、pdate.393 等等,可以重新運(yùn)行它們中的命令:% mysql--one-database db_name updata.392% mysql--one-database db_name updata.393…如果正在運(yùn)行恢復(fù)并打算使用更新日志恢復(fù)由于失策的DROP DATA BASE、DROPTABLE或DELETE 語(yǔ)句而丟失的信息,應(yīng)確保先從更新日志中刪除這些語(yǔ)句。恢復(fù)單個(gè)的表恢復(fù)單個(gè)表是很困難的。如果有通過(guò)mysqldump 生成的備份文件并且它恰好不包含您想要的表數(shù)據(jù),則需要抽取相關(guān)的行并用它們作為mysql的輸入,這部分較容易。困難的是抽取應(yīng)用于該表的更新日志的片段。您會(huì)發(fā)現(xiàn): mysql_find_rows 實(shí)用程序?qū)@方面有幫助,它可以從更新日志中抽取多行查詢(xún)。另一種可能性是用另一個(gè)服務(wù)器恢復(fù)整個(gè)數(shù)據(jù)庫(kù),然后將所要的該表的文件拷貝到原始數(shù)據(jù)庫(kù)中。這實(shí)際很容易!在將文件拷貝回?cái)?shù)據(jù)庫(kù)目錄時(shí),應(yīng)確保原始數(shù)據(jù)庫(kù)的服務(wù)器關(guān)閉。
誤刪數(shù)據(jù)需要恢復(fù)可以試試恢復(fù)軟件,你可以用 AneData全能文件恢復(fù)。重要的數(shù)據(jù)被刪或者格式化,被殺毒軟件清理,無(wú)故丟失等等都可以用這個(gè)軟件來(lái)掃描恢復(fù),選擇合適的恢復(fù)模式掃描可以事半功倍。這個(gè)軟件確實(shí)非常不錯(cuò),是目前最好用的數(shù)據(jù)恢復(fù)工具了。是中文的界面,操作起來(lái)非常的簡(jiǎn)單方便。
如果你要恢復(fù)的數(shù)據(jù)庫(kù)是包含授權(quán)表的mysql數(shù)據(jù)庫(kù),您將需要使用--skip贈(zèng)款-tables選項(xiàng)來(lái)運(yùn)行服務(wù)器恢復(fù)整個(gè)數(shù)據(jù)庫(kù)
- 首先,。否則,服務(wù)器會(huì)抱怨不能找到授權(quán)表。恢復(fù)表后,執(zhí)行mysqladmin沖水privileges告訴服務(wù)器裝載授權(quán)表,并用它們來(lái)啟動(dòng)。數(shù)據(jù)庫(kù)目錄到其他地方的原始內(nèi)容
復(fù)制。例如,您可以使用它們?cè)谝院蟮氖潞蠓治鰴z查表(驗(yàn)尸)的崩潰。
酒店與最新的數(shù)據(jù)庫(kù)備份文件重新加載。如果您打算使用mysqldump的所加載的文件,則需要輸入它們作為mysql的。如果您打算使用從數(shù)據(jù)庫(kù)文件直接拷貝(例如,使用tar或CP),它會(huì)復(fù)制他們直接回?cái)?shù)據(jù)庫(kù)目錄中。然而,在這種情況下,你應(yīng)該在關(guān)閉之前,該服務(wù)器復(fù)制這些文件,然后重新啟動(dòng)它。在備份過(guò)程中
重做日志,然后查詢(xún)更新數(shù)據(jù)庫(kù)表中。對(duì)于所有可用的更新日志,你可以使用它作為mysql的輸入。指定--one-database選項(xiàng),因此MySQL只是要還原的數(shù)據(jù)庫(kù)執(zhí)行查詢(xún)。如果你意識(shí)到有必要使用所有的更新日志文件,可以使用包含以下命令日志的目錄:
%LS-TRL更新(0-9)* | xargs的貓| mysql--。一個(gè)數(shù)據(jù)庫(kù)DB_NAME
ls命令生成一個(gè)單獨(dú)的日志文件更新列表,更新日志文件根據(jù)服務(wù)器(你知道,如果你其中的任何文件,排序順序生成的順序進(jìn)行排序會(huì)發(fā)生變化,這將導(dǎo)致在更新日志中以錯(cuò)誤的順序使用)。有限公司您可能需要使用一些更新日志。例如,如果日志,因?yàn)槊鹵pdate.392備份,pdate.393等產(chǎn)生的,可以在命令重新運(yùn)行它們:
%的mysql - 一個(gè)數(shù)據(jù)庫(kù)DB_NAME 錄入。 392
%的mysql - 一個(gè)數(shù)據(jù)庫(kù)DB_NAME updata.393 ...
如果您正在運(yùn)行的恢復(fù),并打算使用更新日志恢復(fù)由于失誤降數(shù)據(jù)的基礎(chǔ)上,DROPTABLE或DELETE語(yǔ)句和丟失的信息時(shí),一定要在開(kāi)始更新日志刪除這些語(yǔ)句。
恢復(fù)單個(gè)表
恢復(fù)單個(gè)表是非常困難的。如果是的mysqldump備份文件生成的,它只是不包含數(shù)據(jù),您需要一個(gè)表,你需要提取的相關(guān)線(xiàn)路,并利用它們作為mysql的輸入,這部分比較容易。困難的是,提取在該表的更新日志中使用的片段。你會(huì)發(fā)現(xiàn):mysql_find_rows工具在這方面有所幫助,它可以提取多行從更新日志查詢(xún)。另一種可能性是使用另一臺(tái)服務(wù)器
恢復(fù)整個(gè)數(shù)據(jù)庫(kù),然后將該文件復(fù)制到表的原始數(shù)據(jù)庫(kù)。這其實(shí)很容易!當(dāng)文件被復(fù)制回?cái)?shù)據(jù)庫(kù)目錄,確保原始數(shù)據(jù)庫(kù)服務(wù)器關(guān)閉。
打開(kāi)mysql的bin log功能:
對(duì)于mysql也是支持增量備份,但要打開(kāi)mysql的bin log功能。
我們修改mysql的配置文件。linux是/etc/my.cnf,windows是mysql的安裝目錄/my.ini
我們?cè)赱mysqld]下面加上log-bin一行代碼,如下面。
[mysqld]
log-bin=mysql-bin
復(fù)制代碼
加完后重起mysql即可。
某客戶(hù)更新數(shù)據(jù)的時(shí)候,誤刪了數(shù)據(jù)庫(kù)的內(nèi)容,因?yàn)閿?shù)據(jù)庫(kù)做了主從,但是沒(méi)有做備份(備份很重要啊!)幸好開(kāi)啟了bin-log,之后只好把整個(gè)日志的記錄拿回來(lái)本地進(jìn)行恢復(fù)。
之后自己也做了一個(gè)簡(jiǎn)單的測(cè)試,對(duì)數(shù)據(jù)進(jìn)行恢復(fù),具體如下:
1、新建一個(gè)表
CREATE TABLE `lynn`.`sn_test` ( `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , `age` INT( 3 ) NOT NULL ) ENGINE = MYISAM;
2、插入多條數(shù)據(jù)
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、查看數(shù)據(jù)并刪除
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恢復(fù)數(shù)據(jù)
mysqlbinlog mysql-bin.000006 1.sql
查看1.txt里面數(shù)據(jù)插入的紀(jì)錄,把刪除之前的數(shù)據(jù)進(jìn)行恢復(fù)
mysqlbinlog mysql-bin.000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123
重新登錄,查看數(shù)據(jù),OK,已經(jīng)成功恢復(fù)了
對(duì)于數(shù)據(jù)庫(kù)操作,應(yīng)該注意如下問(wèn)題:
1、要常備份(全備,增量備份),出了問(wèn)題可以最快恢復(fù)數(shù)據(jù);
2、操作數(shù)據(jù)庫(kù)前,要把需要操作的數(shù)據(jù)庫(kù)或者表dump出來(lái);
3、需要把bin-log打開(kāi),就算沒(méi)有做上面的兩步,也可以通過(guò)日志恢復(fù)數(shù)據(jù)
分享題目:mysql誤刪怎么補(bǔ)救 mysql誤刪除恢復(fù)
本文地址:http://chinadenli.net/article8/dooijop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、建站公司、網(wǎng)站改版、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)