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;。
為伊美等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及伊美網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、伊美網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
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;),實驗環(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**_ 選項生成回滾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ù)。就完成了。
mysql數(shù)據(jù)庫不小心還原了需要按照以下步驟恢復(fù)。
1、先確認(rèn)mysql有沒有啟用bin日志 ,就是看下mysql.ini(my.cnf)里的log-bin=mysql-bin, 可以 自定義一個目錄和前綴名,比如/data/log/mylog這樣。
2、然后在數(shù)據(jù)庫文件存放的data目錄就能看到mysql-bin.00000x這樣的文件,這就是二進(jìn)制日志了,可以導(dǎo)出成txt格式的,里面其實就是對數(shù)據(jù)庫的各種操作sql語句。
3、導(dǎo)出txt文件:
e:\wamp\bin\mysql\mysql5.6.12\binmysqlbinlog
--database=testdatabase
e:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin.000312
c:\\test1.txt
這是windows下的導(dǎo)出,linux也是類似的。
database=數(shù)據(jù)庫名
從最早的日志還始還原
linux下可以很方便的 mysql-bin.000*
可以加參數(shù)開始時間和結(jié)束時間,就是你執(zhí)行那條sql語句的時間
start-datetime="2014-12-04
11:25:56"
--stop-datetime="2014-12-04
13:23:50"
4、恢復(fù)數(shù)據(jù):
e:\wamp\bin\mysql\mysql5.6.12\binmysqlbinlog
--database=yundongchao
e:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin.000179
|
mysql
-u
root
-p
------------------------------------------------
1.第一步,查詢語句:select*fromtable_name;或select*fromtable_namewhere條件,如下圖。
2.第二步,增加語句或插入數(shù)據(jù)insertintotable_name(clus...)values(values...)實例如圖
3.修改數(shù)據(jù):updatetablenamesetxx=xx,xxx=xxwherexxx=xxxandxxx=xxx,如下圖。
4.第四步,刪除語句deletetable_namewhere條件實例如圖。
1 找個別的機(jī)器安裝個同版本的mysql或從已安裝同版本的其他機(jī)器上(非同版本的也可以試下):
拷貝 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)。
數(shù)據(jù)庫誤刪某表恢復(fù)方法,這個前提是針對每天有備份的數(shù)據(jù)庫 ,如果沒有備份 恢復(fù)起來會非常非常麻煩,所以奉勸大家還是要備份!備份!備份!
/*首先查看一下數(shù)據(jù)表中的數(shù)據(jù)*/MariaDB [drop_test] select * from python_test;+----+-----------+------------+| id | name ? ? ?| class_time |+----+-----------+------------+| ?1 | 字典 ? ? ?| ? ? ? ? ?3 || ?2 | 列表 ? ? ?| ? ? ? ? ?2 || ?3 | 函數(shù) ? ? ?| ? ? ? ? ?5 || ?4 | 裝飾器 ? ?| ? ? ? ? ?2 || ?5 | 迭代器 ? ?| ? ? ? ? ?2 |+----+-----------+------------+5 rows in set (0.00 sec)
/*備份*/mysqldump -uroot -p111111 -B drop_test drop_test.sql
/*再插入數(shù)據(jù)后刪除數(shù)據(jù)庫*/MariaDB [drop_test] INSERT INTO python_test(id,name,class_time) value(6,'生成器',2);
Query OK, 1 row affected (0.01 sec)
MariaDB [drop_test] INSERT INTO python_test(id,name,class_time) value(7,'類的方法',5);
Query OK, 1 row affected (0.00 sec)
刪除數(shù)據(jù)庫
MariaDB [drop_test] drop database drop_test ;
Query OK, 1 row affected (0.01 sec)
切記這個時候不要有任何的操作?。?!
/*這個時候要將當(dāng)前的binlog日志拷貝到其他目錄,以免后續(xù)操作對binlog日志產(chǎn)生影響*/cp /var/lib/mysql/mysql-bin.000006 /home
/*執(zhí)行命令*/mysqlbinlog -d drop_test mysql-bin.000006 006bin.sql
編輯006bin.sql將里面的drop全部刪除
最后則是開始恢復(fù)數(shù)據(jù)
/*首先恢復(fù)備份文件*/mysql -uroot -p111111 drop_test drop_test.sql
/*查看數(shù)據(jù)庫備份文件*/MariaDB [(none)] show databases;+--------------------+| Database ? ? ? ? ? |+--------------------+| information_schema || drop_test ? ? ? ? ?|| for_bak ? ? ? ? ? ?|| lhc ? ? ? ? ? ? ? ?|| mysql ? ? ? ? ? ? ?|| performance_schema || test ? ? ? ? ? ? ? |+--------------------+7 rows in set (0.00 sec)/*備份的數(shù)據(jù)已經(jīng)恢復(fù)了*/MariaDB [drop_test] show tables;+---------------------+| Tables_in_drop_test |+---------------------+| python_test ? ? ? ? |+---------------------+1 row in set (0.00 sec)
MariaDB [drop_test] select * from python_test;+----+-----------+------------+| id | name ? ? ?| class_time |+----+-----------+------------+| ?1 | 字典 ? ? ?| ? ? ? ? ?3 || ?2 | 列表 ? ? ?| ? ? ? ? ?2 || ?3 | 函數(shù) ? ? ?| ? ? ? ? ?5 || ?4 | 裝飾器 ? ?| ? ? ? ? ?2 || ?5 | 迭代器 ? ?| ? ? ? ? ?2 |+----+-----------+------------+5 rows in set (0.00 sec)
接下來恢復(fù)備份之后被刪除的數(shù)據(jù)
mysql -uroot -p111111 drop_test 006bin.sql
/*恢復(fù)后查看數(shù)據(jù)*/MariaDB [drop_test] select * from python_test;+----+--------------+------------+| id | name ? ? ? ? | class_time |+----+--------------+------------+| ?1 | 字典 ? ? ? ? | ? ? ? ? ?3 || ?2 | 列表 ? ? ? ? | ? ? ? ? ?2 || ?3 | 函數(shù) ? ? ? ? | ? ? ? ? ?5 || ?4 | 裝飾器 ? ? ? | ? ? ? ? ?2 || ?5 | 迭代器 ? ? ? | ? ? ? ? ?2 || ?6 | 生成器 ? ? ? | ? ? ? ? ?2 || ?7 | 類的方法 ? ? | ? ? ? ? ?5 |+----+--------------+------------+7 rows in set (0.00 sec)
1 找個別的機(jī)器安裝個同版本的mysql或從已安裝同版本的其他機(jī)器上(非同版本的也可以試下):
拷貝 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)。
網(wǎng)站欄目:誤刪除mysql怎么恢復(fù) mysql 誤刪恢復(fù)
鏈接URL:http://www.rwnh.cn/article18/higddp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站維護(hù)、、品牌網(wǎng)站建設(shè)、電子商務(wù)、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)