1. 程式人生 > >利用binlog回復誤刪表和庫

利用binlog回復誤刪表和庫

mysql binlog

利用binlog回復誤刪表和庫


查看某個binlog日誌內容,常用有兩種方式:

1、 # /usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000013

2、 mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];

選項解析:

IN 'log_name' 指定要查詢的binlog文件名(不指定就是第一個binlog文件)

FROM pos 指定從哪個pos起始點開始查起(不指定就是從整個文件首個pos點開始算)

LIMIT [offset,] 偏移量(不指定就是0)

row_count 查詢總條數(不指定就是所有行)


D.指定查詢 mysql-bin.000021 這個文件,從pos點:8224開始查起,查詢10條

mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 10\G;



6.從binlog日誌恢復數據

# /usr/local/mysql/bin/mysql -uroot -p123456 -v < /root/BAK.zyyshop.sql;

常用選項:

--start-position=953 起始pos點

--stop-position=1437 結束pos點

--start-datetime="2013-11-29 13:18:54" 起始時間點

--stop-datetime="2013-11-29 13:21:53" 結束時間點

--database=zyyshop 指定只恢復zyyshop數據庫(一臺主機上往往有多個數據庫,只限本地log日誌)

小結:實際是將讀出的binlog日誌內容,通過管道符傳遞給mysql命令。這些命令、文件盡量寫成絕對路徑;



B.指定pos結束點恢復(部分恢復):

@ --stop-position=953 pos結束點

註:此pos結束點介於“導入實驗數據”與更新“name='李四'”之間,這樣可以恢復到更改“name='李四'”之前的“導入測試數據”

# /usr/local/mysql/bin/mysqlbinlog --stop-position=953 --database=zyyshop /usr/local/mysql/data/mysql-bin.000023 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop


C.指定pso點區間恢復(部分恢復):

更新 name='李四' 這條數據,日誌區間是Pos[1038] --> End_log_pos[1164],按事務區間是:Pos[953] --> End_log_pos[1195];


c1.單獨恢復 name='李四' 這步操作,可這樣:

# /usr/local/mysql/bin/mysqlbinlog --start-position=1038 --stop-position=1164 --database=zyyshop /usr/local/mysql/data/mysql-bin.000023 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop


也可以按事務區間單獨恢復,如下:

# /usr/local/mysql/bin/mysqlbinlog --start-position=953 --stop-position=1195 --database=zyyshop /usr/local/mysql/data/mysql-bin.000023 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop



# /usr/local/mysql/bin/mysqlbinlog --start-datetime="2013-11-29 13:18:54" --stop-datetime="2013-11-29 13:21:53" --database=zyyshop /usr/local/mysql/data/mysql-bin.000021 | /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop


總結:所謂恢復,就是讓mysql將保存在binlog日誌中指定段落區間的sql語句逐個重新執行一次而已。


利用binlog回復誤刪表和庫