MySQL實現基於時間點的恢複

來源:互聯網
上載者:User

前提:
mysql必須開啟二進位日誌功能
二進位日誌會記錄 DML DCL DDL

[mysqld]
log-bin=/data/mysql-bin

時間點1 Thu Dec 16 13:53:54 CST 2010
建立一個表
插入一些資料
mysql> use test;
mysql> create table upl (id int , user varchar(16));
mysql> insert into upl values (1,’tom’),(2,’mary’),(3,’bean’);

時間點2 Thu Dec 16 13:55:47 CST 2010
刪除一些資料(誤操作)
mysql> delete from upl where id=2;

時間3 Thu Dec 16 13:56:26 CST 2010
增加一些新資料
mysql> insert into upl values (4,’moto’),(5,’nokia’);

恢複需求:保留所有的資料,包括時間1,2,3的資料

強烈建議:做任何恢複之前都給資料庫做一個完整備份

開始恢複之前重新整理日誌
mysql> flush logs;

mysql> show master status \G;
************************** 1. row **************************
File: mysql-bin.000002 《--表示資料庫使用該記錄檔記錄
Position: 106
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)

類比實驗就可以直接把原來的資料表刪除,真實情況一般都是把要恢複的資料恢複到一個臨時的資料庫
mysql> drop table upl;

讀取誤操作之前的語句
# /usr/local/mysql/bin/mysqlbinlog --stop-date=’2010-12-16 13:55:47′ /data/mysql-bin.000001 | mysql -u root -p123 -S /data/mysql.sock

跳過誤操作的時間點,讀取二進位記錄檔 提取時間3的語句
# /usr/local/mysql/bin/mysqlbinlog --start-date=’2010-12-16 13:56:26′ /data/mysql-bin.000001 | mysql -u root -p123 -S /data/mysql.sock

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.