mysqlbinlog基于postion的数据恢复
2016-07-26 10:40
369 查看
今天我们来实验一下用mysqlbinlog进行数据误删除后的恢复实验。
TIPS:首先作为DBA要有备份数据的意识,否则真到出问题丢数据的时候就可以收拾收拾回家了。
前提假设:①17:48已经有了mail表的一个全备(以防丢失数据)
示例表结构如下:
create table
CREATE TABLE
PRIMARY KEY (
KEY
) ENGINE=InnoDB AUTO_INCREMENT=7499660 DEFAULT CHARSET=utf8
我们现在已前几条数据做实验:
为了有对比,我更改其中两条数据,一个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来算,此种方法是不太实用。但是这是一种对数据恢复的小实验。
TIPS:首先作为DBA要有备份数据的意识,否则真到出问题丢数据的时候就可以收拾收拾回家了。
前提假设:①17:48已经有了mail表的一个全备(以防丢失数据)
示例表结构如下:
create table
CREATE TABLE
idint(10) unsigned NOT NULL AUTO_INCREMENT,
user_emailvarchar(50) NOT NULL COMMENT ‘邮件地址’,
subjectvarchar(30) NOT NULL COMMENT ‘邮件主题’,
mail_typevarchar(10) NOT NULL COMMENT ‘邮件类型’,
addtimeint(11) NOT NULL COMMENT ‘添加时间’,
is_sendtinyint(1) NOT NULL COMMENT ‘是否已发送 1为已发送 0为未发’,
PRIMARY KEY (
id),
KEY
idx_issend(
is_send)
) ENGINE=InnoDB AUTO_INCREMENT=7499660 DEFAULT CHARSET=utf8
我们现在已前几条数据做实验:
为了有对比,我更改其中两条数据,一个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来算,此种方法是不太实用。但是这是一种对数据恢复的小实验。
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜