具體的操作是通過mysqlbinlog這個指令來完成的
/mysql/bin/mysqlbinlog --database=fox --start-date="2013-01-22 5:00:00" --stop-date="2013-01-22 9:00:00" /mysql/data/mysql-bin.000001 | /mysql/bin/mysql -u root -p123456 -f
具體的參數看下名字就能明白
database:指定具體的數據庫
start-date:開始時間
stop-date:結束時間
/mysql/data/mysql-bin.000001:
指定的日志文件
如果你沒有備份數據的話,你就必須通過日志文件一個一個還原,記得順序不能亂。如果你沒有備份數據,日志又被部分刪除的話,那么就悲劇了。因此,還原只是一種方法,最重要的還是定期備份數據。只要備份數據在,日志文件在,東西都可以解決。
同時記錄一些操作日志的方法
查看所有日志:
show master logs;
當前使用的binlog文件
show binlog events g;
產生一個新的binlog日志文件
flush logs;
刪除所有二進制日志,並從新開始記錄
flush logs;
reset master;
這里突然有一種想法,是否每次備份完數據以后就把之前的日志清理下,這樣一旦發生問題,就可以從最近的日志開始還原。這個只是我的一種想法,有什么問題請指正。
同時大家如果希望不在錯誤操作delete這個可以在mysql啟動的時候加入-U這個參數
啟動MySQL的時候加上參數 -U
-U, –safe-updates Only allow UPDATE and DELETE that uses keys.
他的作用是防止執行delete的時候沒帶有條件語句,如果沒加上where則語句不執行。
一次完整的Mysqlbin-log日志恢復過程實例
1).創建一個表:
mysql>usetest; mysql>createtable t1(id int); mysql>showtables;
2).添加兩行數據:
mysql>insertinto t1 values(1); mysql>insertinto t1 values(2); mysql>select *from t1;
3).備份現有數據(09:30):
#mysqldump -uroot-p123456 test -l -F > /tmp/test.sql
4).在備份完后再添加三行數據(記錄):
mysql>insertinto t1 values(3); mysql>insertinto t1 values(4); mysql>insertinto t1 values(5);
5).此時突然數據庫損損壞或者認為刪除:
mysql>droptable t1;
6).用已備份的test.sql來恢復數據庫:
#mysql -uroot-p123456 test < test.sql
7).從bin-log日志恢復:
#/usr/local/mysql/bin/mysqlbinlog–no-defaults mysql-bin.000006|more//查看bin-log日志,在我的虛力機上bin-log日志從mysql-bin.000005開始 #/usr/local/mysql/bin/mysqlbinlog--no-defaults --stop-position=”272” mysql-bin.000006 |/usr/local/mysql/bin/mysql -uroot -p123456 //恢復bin-log日志
如果你沒有開啟bin日志我們可參考正同方法開啟
一、 Mysqlbin-log 日志
1.開啟Mysqlbin-log 日志
#vi/etc/my.cnf
[client] #password =your_password port =3306 socket =/tmp/mysql.sock default-character-set-utf8 ....... [mysqld] port= 3306 socket= /var/lib/mysql/mysql.sock log-slow-queries=mysql-slowlog log-error=mysql.err log=mysql.log log-bin=mysql-bin//刪除#符號
2.查看二進制文件(mysql-bin.******)
#cd/usr/local/mysql/bin/ && ls
3.查看mysqbinlog日志是否開啟
mysql>showvariables like “%log-bin%;
4.與Mysqlbin-log有關的日志操作
mysql>flushlogs;//此時就會多一個最新的bin-log日志 mysql>showmaster status;//查看最后一個bin日志 mysql>resetmaster;//清空所有的bin-log日志 mysql>mysqlbinlog–no-defaults mysql-bin.******|more//查看bin-log日志
掃碼關注微信公眾號