1 找個別的機(jī)器安裝個同版本的mysql或從已安裝同版本的其他機(jī)器上(非同版本的也可以試下):
創(chuàng)新互聯(lián)服務(wù)緊隨時代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過十載的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進(jìn)行成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。
拷貝 mysql/data/mysql 目錄到你的mysql/data/ 下吧
2 試著啟動mysql服務(wù),如果能啟動了,理論上應(yīng)該丟失的只有用戶、授權(quán)等一些系統(tǒng)信息,不影響你的使用的數(shù)據(jù);
如果不能啟動,看錯誤日志,爭取啟動了。
3 趕緊把數(shù)據(jù)備份一份出來,重新把所有庫(只是你后來創(chuàng)建的業(yè)務(wù)相關(guān)的庫,不包括mysql庫)都刪了,重新導(dǎo)入一遍。理論上不這樣也可以,但只是非生產(chǎn)重要的環(huán)境下。
4 重新做用戶授權(quán)。
如果你要恢復(fù)的數(shù)據(jù)庫是包含授權(quán)表的mysql數(shù)據(jù)庫,您將需要使用--skip贈款-tables選項(xiàng)來運(yùn)行服務(wù)器恢復(fù)整個數(shù)據(jù)庫
- 首先,。否則,服務(wù)器會抱怨不能找到授權(quán)表。恢復(fù)表后,執(zhí)行mysqladmin沖水privileges告訴服務(wù)器裝載授權(quán)表,并用它們來啟動。數(shù)據(jù)庫目錄到其他地方的原始內(nèi)容
復(fù)制。例如,您可以使用它們在以后的事后分析檢查表(驗(yàn)尸)的崩潰。
酒店與最新的數(shù)據(jù)庫備份文件重新加載。如果您打算使用mysqldump的所加載的文件,則需要輸入它們作為mysql的。如果您打算使用從數(shù)據(jù)庫文件直接拷貝(例如,使用tar或CP),它會復(fù)制他們直接回數(shù)據(jù)庫目錄中。然而,在這種情況下,你應(yīng)該在關(guān)閉之前,該服務(wù)器復(fù)制這些文件,然后重新啟動它。在備份過程中
重做日志,然后查詢更新數(shù)據(jù)庫表中。對于所有可用的更新日志,你可以使用它作為mysql的輸入。指定--one-database選項(xiàng),因此MySQL只是要還原的數(shù)據(jù)庫執(zhí)行查詢。如果你意識到有必要使用所有的更新日志文件,可以使用包含以下命令日志的目錄:
%LS-TRL更新(0-9)* | xargs的貓| mysql--。一個數(shù)據(jù)庫DB_NAME
ls命令生成一個單獨(dú)的日志文件更新列表,更新日志文件根據(jù)服務(wù)器(你知道,如果你其中的任何文件,排序順序生成的順序進(jìn)行排序會發(fā)生變化,這將導(dǎo)致在更新日志中以錯誤的順序使用)。有限公司您可能需要使用一些更新日志。例如,如果日志,因?yàn)槊鹵pdate.392備份,pdate.393等產(chǎn)生的,可以在命令重新運(yùn)行它們:
%的mysql - 一個數(shù)據(jù)庫DB_NAME 錄入。 392
%的mysql - 一個數(shù)據(jù)庫DB_NAME updata.393 ...
如果您正在運(yùn)行的恢復(fù),并打算使用更新日志恢復(fù)由于失誤降數(shù)據(jù)的基礎(chǔ)上,DROPTABLE或DELETE語句和丟失的信息時,一定要在開始更新日志刪除這些語句。
恢復(fù)單個表
恢復(fù)單個表是非常困難的。如果是的mysqldump備份文件生成的,它只是不包含數(shù)據(jù),您需要一個表,你需要提取的相關(guān)線路,并利用它們作為mysql的輸入,這部分比較容易。困難的是,提取在該表的更新日志中使用的片段。你會發(fā)現(xiàn):mysql_find_rows工具在這方面有所幫助,它可以提取多行從更新日志查詢。另一種可能性是使用另一臺服務(wù)器
恢復(fù)整個數(shù)據(jù)庫,然后將該文件復(fù)制到表的原始數(shù)據(jù)庫。這其實(shí)很容易!當(dāng)文件被復(fù)制回數(shù)據(jù)庫目錄,確保原始數(shù)據(jù)庫服務(wù)器關(guān)閉。
1、首先構(gòu)建測試環(huán)境數(shù)據(jù)create table t1(a varchar(10),b varchar(10));insert into t1 values('1','1');insert into t1 values('2','2');commit;。
2、模擬誤修改,將t1表中的b字段更新為錯誤數(shù)據(jù) "123456"update t1 set b='123456' where a='1';commit;select * from t1;。
3、將恢復(fù)工具上傳到服務(wù)器并進(jìn)行解壓。unzip binlog2sql-master.zip。
4、得到誤修改時的binlog文件(show binary logs;),實(shí)驗(yàn)環(huán)境是mysql-bin.000011。
5、通過?binlog2sql.py 腳本的到所有 對表 t1 的修改操作。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011'。
6、得到了誤刪除的sql的準(zhǔn)確位置在1382-1615之間,使用 _**-B**_ 選項(xiàng)生成回滾sql。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011' --start-position=1382 --stop-position=1615 -B。
7、執(zhí)行得到的回滾語句進(jìn)行誤操作恢復(fù)。就完成了。
以下情況可以恢復(fù)數(shù)據(jù):
1 innodb引擎表開啟了事務(wù),執(zhí)行dml語句,比如delete、update、insert之類,并且沒有提交即commit操作的話,可以執(zhí)行rollback進(jìn)行回滾恢復(fù)。如果是ddl操作,如drop、create、alter之類的操作時無效的
2 在進(jìn)行刪除操作之前有備份,比如mysqldump,物理備份數(shù)據(jù)文件之類的操作,那么可以恢復(fù)到刪除前的數(shù)據(jù)
3 如果你的刪除操作是直接對data下的文件進(jìn)行刪除,注意,不是粉碎文件操作,那么你可以嘗試用磁盤恢復(fù)軟件來找回被誤刪的數(shù)據(jù)文件;
除以上情況,其他真的是沒法恢復(fù)了,不過貌似很多公司號稱能夠恢復(fù),要收費(fèi),具體他們怎么恢復(fù)我就不曉得了。
可以找回來。
如果在企業(yè)管理器里刪除了數(shù)據(jù)庫,如果有備份,恢復(fù)備份數(shù)據(jù)就可以。如果你是在程序里卸載sql程序,數(shù)據(jù)就在sql安裝目錄里,附加數(shù)據(jù)庫就可以了。也可以將恢復(fù)工具上傳到服務(wù)器并進(jìn)行解壓。
1.第一步,查詢語句:select*fromtable_name;或select*fromtable_namewhere條件,如下圖。
2.第二步,增加語句或插入數(shù)據(jù)insertintotable_name(clus...)values(values...)實(shí)例如圖
3.修改數(shù)據(jù):updatetablenamesetxx=xx,xxx=xxwherexxx=xxxandxxx=xxx,如下圖。
4.第四步,刪除語句deletetable_namewhere條件實(shí)例如圖。