热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL实现基于时间点的恢复-mysql教程

前提:mysql必须打开二进制日志功能二进制日志会记录DMLDCLDDL[mysqld]log-bindatamysql-bin时间点1ThuDec1613:53:54

前提:mysql必须打开二进制日志功能二进制日志会记录 DML DCL DDL[mysqld]log-bin=/data/mysql-bin时间点1 Thu Dec 16 13:53:54

前提:
mysql必须打开二进制日志功能
二进制日志会记录 DML DCL DDL

[mysqld]
log-bin=/data/mysql-bin

时间点1 Thu Dec 16 13:53:54 CST 2010
建立一个表
插入一些数据
mysql> use test;
mysql> create table upl (id int , user varchar(16));
mysql> insert into upl values (1,’tom’),(2,’mary’),(3,’bean’);

时间点2 Thu Dec 16 13:55:47 CST 2010
删除一些数据(误操作)
mysql> delete from upl where id=2;

时间3 Thu Dec 16 13:56:26 CST 2010
增加一些新数据
mysql> insert into upl values (4,’moto’),(5,’nokia’);

恢复需求:保留所有的数据,包括时间1,,2,3的数据

强烈建议:做任何恢复之前都给数据库做一个完整备份

开始恢复之前刷新日志
mysql> flush logs;

mysql> show master status \G;
************************** 1. row **************************
File: mysql-bin.000002 《--表示数据库使用该日志文件记录
Position: 106
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)

模拟实验就可以直接把原来的数据表删除,真实情况一般都是把要恢复的数据恢复到一个临时的数据库
mysql> drop table upl;

读取误操作之前的语句
# /usr/local/mysql/bin/mysqlbinlog --stop-date=’2010-12-16 13:55:47′ /data/mysql-bin.000001 | mysql -u root -p123 -S /data/mysql.sock

跳过误操作的时间点,读取二进制日志文件 提取时间3的语句
# /usr/local/mysql/bin/mysqlbinlog --start-date=’2010-12-16 13:56:26′ /data/mysql-bin.000001 | mysql -u root -p123 -S /data/mysql.sock

linux

推荐阅读
author-avatar
手机用户2502894731
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有