mysqlbinlog基于postion的数据恢复

今天我们来实验一下用mysqlbinlog进行数据误删除后的恢复实验。

TIPS:首先作为DBA要有备份数据的意识,否则真到出问题丢数据的时候就可以收拾收拾回家了。

前提假设:①17:48已经有了mail表的一个全备(以防丢失数据)

示例表结构如下:

create table
CREATE TABLE mail (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
user_email varchar(50) NOT NULL COMMENT ‘邮件地址’,
subject varchar(30) NOT NULL COMMENT ‘邮件主题’,
mail_type varchar(10) NOT NULL COMMENT ‘邮件类型’,
addtime int(11) NOT NULL COMMENT ‘添加时间’,
is_send tinyint(1) NOT NULL COMMENT ‘是否已发送 1为已发送 0为未发’,
PRIMARY KEY (id),
KEY idx_issend (is_send)
) ENGINE=InnoDB AUTO_INCREMENT=7499660 DEFAULT CHARSET=utf8
如图显示此时改表的数据总数
我们现在已前几条数据做实验:
即将作为实验的5条数据
为了有对比,我更改其中两条数据,一个update一个delete,delete的那个是我们要恢复的数据,update是我们要保留的更新的数据。

操作数据

下面我们来看日志记录:
日志记录
日志中记录了两条数据更改的记录。

下面开始日志恢复:
我们应该将日志position恢复时position放在误删语句的上下
mysqlbinlog –stop-position=’597’ -d=’test’ /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -p

mysqlbinlog –start-position=’749’ -d=’test’ /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -p

查看数据:数据已回来

包括update的数据和已删除的数据都已经回来了。

总结:此种方法虽然能简单的恢复数据,但是并不适合真正的生产环境,生产环境读写量大,日志都是以G来算,此种方法是不太实用。但是这是一种对数据恢复的小实验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值