mysql利用bin-log恢復誤刪除數據.

模擬備份數據庫mysql

mysqldump db1 > db1.sql

啓用新的bin-log文件sql

mysql>flush logs; 
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

insert into travelrecord(id,user_id,traveldate,fee,days) values(1002,'1002',20160102,100,10);
UPDATE travelrecord SET user_id = 'hahaha' WHERE id = 1002;
delete from travelrecord where id=1002;

用mysqlbinlog mysql-bin.000003查看具體誤刪除的時間數據庫

mysqlbinlog  mysql-bin.000003

#180123 15:24:07 server id 101  end_log_pos 847 CRC32 0x8e720ef9    Query   thread_id=20    exec_time=0 error_code=0
SET TIMESTAMP=1516692247/*!*/;
delete from travelrecord where id=1002
/*!*/;
.# at 847

此時備份數據庫後在還原以前的備份數據。ide

mysql> set sql_log_bin=0;   臨時關閉以避免恢復過程生成大量的bin-log文件
mysql> use db1;
mysql> source /root/db1.sql;

mysqlbinlog --stop-datetime="2018-01-23 15:24:07 " mysql-bin.000003| mysql -uroot -p

查看數據庫便可恢復數據。code

相關文章
相關標籤/搜索