当前位置:网站首页>Mysql删库恢复数据
Mysql删库恢复数据
2022-08-02 14:16:00 【怎么起个名就那么难】
Mysql系列文章目录
我们常常说的一句话,删库跑路,删库是不需要跑路的
一、bin-log归档

删库是不需要跑路的,因为我们的SQL执行时,会将sql语句的执行逻辑记录在我们的bin-log当中,什么是bin-log呢?
binlog是Server层实现的二进制日志,他会记录我们的cud操作。Binlog有以下几个特点:
1、Binlog在MySQL的Server层实现(引擎共用)
2、Binlog为逻辑日志,记录的是一条语句的原始逻辑
3、Binlog不限大小,追加写入,不会覆盖以前的日志
如果,我们误删了数据库,可以使用binlog进行归档!要使用binlog归档,首先我们得记录binlog,因此需要先开启MySQL的binlog功能。
配置my.cnf
配置开启binlog
log-bin=/usr/local/mysql/data/binlog/mysql-bin
注意5.7以及更高版本需要配置本项:server-id=123454(自定义,保证唯一性);
#binlog格式,有3种statement,row,mixed
binlog-format=ROW
#表示每1次执行写入就与硬盘同步,会影响性能,为0时表示,事务提交时mysql不做刷盘操作,由系统决定
sync-binlog=1
binlog命令
show variables like '%log_bin%'; 查看bin-log是否开启
flush logs; 会多一个最新的bin-log日志
show master status; 查看最后一个bin-log日志的相关信息
reset master; 清空所有的bin-log日志
查看binlog内容
/usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001 查看binlog内容
binlog里的内容不具备可读性,所以需要我们自己去判断恢复的逻辑点位,怎么观察呢?看重点信息,比如begin,commit这种关键词信息,只要在binlog当中看到了,你就可以理解为begin-commit之间的信息是一个完整的事务逻辑,然后再根据位置position判断恢复即可。binlog内容如下:

数据归档操作
从bin-log恢复数据
恢复全部数据
/usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001 |mysql -uroot -p tuling(数据库名)
恢复指定位置数据
/usr/local/mysql/bin/mysqlbinlog --no-defaults --start-position="408" --stop-position="731" /usr/local/mysql/data/binlog/mysql-bin.000001 |mysql -uroot -p test(数据库)
恢复指定时间段数据
/usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001 --stop-date= "2018-03-02 12:00:00" --start-date= "2019-03-02 11:55:00"|mysql -uroot -p test(数据库)
归档测试准
1、定义一个存储过程,写入数据
drop procedure if exists tproc;
delimiter $$
create procedure tproc(i int)
begin
declare s int default 1;
declare c char(50) default repeat('a',50);
while s<=i do
start transaction;
insert into test values(null,c);
commit;
set s=s+1;
end while;
end$$
delimiter ;
2、删除数据
truncate test;
3、利用binlog归档
/usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001 |mysql -uroot -p test(数据库名)
边栏推荐
猜你喜欢

Technical Selection of Message Queuing

虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本。模块“Upgrade”启动失败。未能启动虚拟机。

Vert.x web 接收请求时反序列化对象 Failed to decode 如何解决?

华为单臂路由配置,实现不同vlan之间的通信

EastWave应用:光场与石墨烯和特异介质相互作用的研究

SkyWalking Agent数据采集和上报原理浅析

LITESTAR 4D应用:室内植物照明模拟

OpenPose 基本理念

Class template/assignment operations and add operations

audio console无法连接到RPC服务
随机推荐
JOOQ 报错 StackOverflowError
Optisystem应用:光电检测器灵敏度建模
超简单了解三次握手与四次挥手
VirtualLab Fusion中的可视化设置
Oauth2.0 authentication server construction
从FAST TCP到POWERTCP
appium 报错:AttributeError:
Technical Selection of Message Queuing
Qt | 实现一个简单的可以转动的仪表盘
[Inter-process communication]: pipe communication/named/unnamed
【无标题】
仿真结果的格式&定制
光波导应用中的真实光栅效应
计算机网络中的安全(一)网络安全的概念与加密原理
char array/string array|array pointer/pointer array/
OpenPose 基本理念
【线程】 理解线程(并行)线程同步的处理(信号量,互斥锁,读写锁,条件变量)
How does ns3 solve cross reference issue
如何编辑VirtualLab Fusion结果的格式
Mobile copy constructor