通过二进制日志恢复数据

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

二进制日志会记录所有更改数据库状态的sql操作,比如create drop update......

二进制日志文件存放在我们的数据目录里,格式如mysql-bin.000001


准备:


进入mysql命令行做如下操作:

    

create database a1;

#创建一个a1库

create database a2;

#创建一个a2库

drop database a1;

#删掉a1库

use a2;

create table aaa (name char(40));

#在a2库里创建一个叫aaa的数据表


接下来我们就恢复a1库


一、通过时间指定还原范围

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
cd  /data/mysql
ls
mysqlbinlog mysql-bin.000009
查看创建a1库的开始时间和创建完成后的时间
 
 
/*!*/;
# at 1047
#170217 23:37:12 server id 1  end_log_pos 1126  Query   thread_id=10    exec_time=0     error_code=0
SET TIMESTAMP=1487345832/*!*/;
create database a1
/*!*/;
# at 1126
#170217 23:37:18 server id 1  end_log_pos 1205  Query   thread_id=10    exec_time=0     error_code=0
SET TIMESTAMP=1487345838/*!*/;
create database a2
/*!*/;
# at 1205
#170217 23:37:26 server id 1  end_log_pos 1282  Query   thread_id=10    exec_time=0     error_code=0
SET TIMESTAMP=1487345846/*!*/;
drop database a1
/*!*/;
# at 1282
#170217 23:37:53 server id 1  end_log_pos 1375  Query   thread_id=10    exec_time=0     error_code=0
use `a2`/*!*/;
SET TIMESTAMP=1487345873/*!*/;
create table aaa (name char(40))
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
 
 
#说明一下:每一个sql语句都以# at 开头,下面一行的#170217 23:37:12就是操作时的时间
 
 
找到之后记录好,开始恢复
 
mysqlbinlog --start-datetime  '2017-02-17 23:37:12'  --stop-datetime  '2017-02-17 23:37:18'  mysql-bin.000009 |mysql
 
#这里说明一下|mysql因为我的没有设密码所以直接用的,如果你的有密码mysql -u -p 这样用
 
我们在进入mysql命令行,show databases 可以看到a1库恢复回来了



二、通过大小指定还原范围

我们这次通过恢复的方法把a1库删掉

还是查看二进制日志文件

通过大小就是所说的# at 后面的数字


mysqlbinlog --start-position 1205 --stop-position 1282 mysql-bin.000009 |mysql


在进入sql命令行show databases;查看一下是不是还有a1库





      本文转自limingyu0312  51CTO博客,原文链接:http://blog.51cto.com/limingyu/1898868,如需转载请自行联系原作者




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
572 1
|
5月前
|
SQL 存储 关系型数据库
|
5月前
|
存储 关系型数据库 MySQL
|
5月前
|
存储 SQL 关系型数据库
|
5月前
|
SQL Oracle 关系型数据库
|
1月前
|
SQL 存储 关系型数据库
Mysql主从同步 清理二进制日志的技巧
Mysql主从同步 清理二进制日志的技巧
27 1
|
4月前
|
存储 关系型数据库 MySQL
|
5月前
|
SQL 运维 关系型数据库
|
5月前
|
SQL 监控 关系型数据库
解密MySQL二进制日志:深度探究mysqlbinlog工具
解密MySQL二进制日志:深度探究mysqlbinlog工具
829 3
|
6月前
|
SQL 存储 关系型数据库
②⑩ 【MySQL Log】详解MySQL日志:错误日志、二进制日志、查询日志、慢查询日志
②⑩ 【MySQL Log】详解MySQL日志:错误日志、二进制日志、查询日志、慢查询日志
134 0