利用日志恢復(fù)數(shù)據(jù)一般情況是你沒對數(shù)據(jù)庫進(jìn)行有效和合理的備份導(dǎo)致了,但有一個提前就是你要做日志恢復(fù)我們就必須是開了mysql日志的,否則是無法進(jìn)行日志備份的.
mysql日志備份優(yōu)缺點(diǎn)
優(yōu)點(diǎn):是想恢復(fù)到某個時間點(diǎn),或某個操作sql語句.
缺點(diǎn):就產(chǎn)生龐大的日志文件.
window中mysql日志恢復(fù)方法
1.開啟mysql日志,在my.ini 文件里找到[mysqld],在其下面增加一行l(wèi)og-bin:
- [mysqld]
- # The TCP/IP Port the MySQL Server will listen on
- port=3306
- log-bin
默認(rèn)日志文件名字是以主機(jī)命名名字,如果想改為自己定義的名字,代碼如下:
- [mysqld]
- # The TCP/IP Port the MySQL Server will listen on
- port=3306
- #mysql-bin為自定義名字
- log-bin = mysql-bin
2.定義日志文件路徑,代碼如下:
- #Path to the database root存放日志的路徑
- datadir="D:/web/mysql/Data/"
3.重啟mysql
在上面的路徑下會產(chǎn)生兩個文件
4.用命令進(jìn)入mysql,代碼如下:
mysql> show binlog events ;
上面pos就是開始位置end_log_pos的結(jié)束位置.
相關(guān)命令:
1.查看當(dāng)前日志開啟情況,代碼如下:
mysql>show variables like 'log%';
2.查看當(dāng)前日志情況,代碼如下:
mysql>show master status;
3.顯示當(dāng)前二進(jìn)制,代碼如下:
mysql>show binary logs;
5.恢復(fù)有兩種:
1.是把日志文件保存成sql文件,再用source命令,定位保存用法:在mysql安裝bin的目下,代碼如下:
mysqlbinlog --start-position=4 --stop-position=239 d:\web\mysql\data\ mysqlbin-log.000001 >test1.txt
定時間保存用法,在mysql安裝bin的目下,代碼如下:
mysqlbinlog --start-datetime="2013-03-16 13:00:00" --stop-datetime="201
再:source test1.txt
2.直接把日志恢復(fù)到某個點(diǎn)上,定時間還原法,在mysql安裝bin的目下,代碼如下:
mysqlbinlog --start-datetime="2013-03-16 13:00:00" --stop-datetime="2013-03-16 14:00:00" d:\web\mysql\data\ mysqlbin-log.000001 | mysql -uroot -p
定位還原法,在mysql安裝bin的目下,代碼如下:
- D:\web\mysql\bin>mysqlbinlog --start-position=3696 --stop-position=4241 d:\web\ --Vevb.com
- ysql\data\mysql-bin.000001 | mysql -hlocalhost -uroot -p
PS:如果在創(chuàng)建表和操作表的過程有錯誤,在還原的時候也是會有錯誤的,那得部分定位來還原,下面是我操作過程中一個小報錯,Duplicate entry '1' for key 1.
去掉auto_increment,或者不要給有auto_increment的字段賦值便可解決,有興趣的朋友可以簡單創(chuàng)建一個表,增加數(shù)據(jù),然后刪除數(shù)據(jù),利用上面步驟看看.
新聞熱點(diǎn)
疑難解答
圖片精選