mysql使用二進制日志恢復數據


一、恢復到某個二進制文件

1.開啟二進制日志

在mysqld的配置節點下添加如下配置

log-bin="E:/Mysql57BinLog/binlog"(windows下的路徑,linux下自行修改路徑) 
expire_logs_days=10
max_binlog_size=100M

2.重啟mysql服務

使用命令show VARIABLES like '%log_bin%';查看

3.創建庫和表

create database mytest;

use mytest;
create table t(a int PRIMARY key)ENGINE = INNODB DEFAULT CHARSET=utf8;

flush logs;
 
flush logs,刷新二進制日志后會多出來一個二進制日志
 
使用命令查看二進制日志內容
 
默認會讀取配置文件,檢測到no--beep會報錯。
推薦使用命令:mysqlbinlog --no-defaults  E:\Mysql57BinLog\binlog.000001
 

4.插入數據

use mytest;
insert into t select 1 union all select 2 union all select 3;

flush logs;
 
 

5.刪除數據庫

drop database mytest;

flush logs;

6.恢復數據

mysqlbinlog --no-defaults E:\Mysql57BinLog\binlog.000001 E:\Mysql57BinLog\binlog.000002 E:\Mysql57BinLog\binlog.000003 | mysql -u root -p
 
數據已還原。
 
-----------------------------------華麗的分割線--------------------------------------------------------------

二、恢復到某一時間點的數據

create table t2(a int PRIMARY key)ENGINE=INNODB default CHARSET=utf8;

insert into t2 values(1),(2),(3),(4),(5);
 
>mysqlbinlog --no-defaults E:\Mysql57BinLog\binlog.000006
 
刪除數據
delete from t2 where a < 4;
 
恢復數據
 
drop database mytest;
刪除庫mytest,回到最原始的地方
 
mysqlbinlog --no-defaults --start-position="4" --stop-position="1285" E:\Mysql57BinLog\binlog.000006  | mysql -u root -p
 
 
數據恢復成功。
 
歡迎大家拍磚~~
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM