工欲善其事必先利其器

想要详细了解数据库误删后的恢复操作,得先了解一些基本的信息

目录

Binlog 日志详解

一、Binlog 记录模式

二、Binlog 文件结构

三、Binlog 写入机制

四、Binlog文件操作

1、查看Binlog的状态

2、开启Binlog功能

3、查看都有哪些日志文件

4、查看当前正在操作的日志

5、查看当前日志中有哪些事件

6、删除日志文件的三种方式

7、查看和修改日志文件的有效期

8、查看日志文件的详细信息

9、对删除数据库的恢复具体操作


首先呢,想要恢复误删的数据库,可以先从日志入手,而在数据库的InnoDB搜索引擎中有三种日志:Undo Log 日志、Redo Log 日志、Binlog 日志,三种日志中,我们需要通过Binlog日志来进行数据库的恢复

Binlog 日志详解

一、Binlog 记录模式

Redo Log 是属于InnoDB引擎所特有的日志,而MySQL Server也有自己的日志,即常说的Binary log(二进制日志)简称:Binlog。Binlog是记录所有数据库表结果变更以及表数据修改的二进制日志,而不会记录SELECT和SHOW这类的操作。Binlog日志以时间的形式进行记录,还会包含语句所执行的消耗时间。开启Binlog日志后,会有以下两个最为重要的使用场景:
        ①  主从复制:在主库中开启Binlog功能,这样主库就可以把Binlog传送给从库,从库在拿到Binlog后,就可以实现数据恢复,从而达到主从数据的一致性。
        ②  数据恢复:通过mysqlbinlog工具来恢复数据。

Binlog文件名默认为“主机名_binlog-序列号”格式,譬如:stu_binlog-000001,当然也可以在配置文件中指定名称。文件记录模式有 STATEMENT、ROW 和 MIXED 三种,具体的含义如下:
        ①  ROW(row-based replication,RBR):日志中会记录每一行数据被修改的情况,然后在slave端对相同的数据进行修改。
        优点:能清楚的记录每一个行数据的修改细节,并能完全实现主从数据同步和数据的恢复。
        缺点:批量操作,会产生大量的日志,尤其是 alter  table 会让日志暴涨。
        ②  STATEMENT(statement-based replication,SBR):每一条被修改数据SQL都会记录到master的Binlog中,slave在复制的时候SQL进程会解析成和原来master端执行过的相同的SQL再次执行。简称SQL语句复制。
        优点:日志量小,减少磁盘IO,提升存储和恢复速度
        缺点:在某些情况下会导致主从数据不一致,譬如:last_insert_id()、now()等函数时
        ③  MIXED(mixed-based replication,MBR):以上两种模式的混合使用,一般会使用STATEMENT模式保存Binlog,对于STATEMENT模式无法复制的操作则使用ROW模式来保存Binlog,MySQL会根据执行的SQL语句来选择写入的模式

二、Binlog 文件结构

MySQL的Binlog文件中记录的是对数据库的各种修改操作,用来表示修改操作的数据结构是Log event,不同的修改操作对应不同的log event,比较常用的log event有:Query event、Row event、Xid event等。Binlog文件的内容就是各种log event的集合。

Binlog文件中的 Log event结构如下图:

timestamp  4字节 事件开始的执行时间

Event Type  1字节

指明该事件的类型
server_id  1字节 服务器的server ID
Event size  4字节 该事件的长度
Next_log pos  4字节 固定4字节下一个event的开始位置
Flag  2字节 固定2字节  event flags
Fixed part 每种Event Type 对应结构体固定的结构部分
Variable part 每种Event Type 对应结构体可变的结构部分

三、Binlog 写入机制

        ①  根据记录模式和操作出发 event 事件生成 log event (事件出发执行机制)
        ②  将事务执行过程中产生的 log event 写入到缓冲区,每个事务线程都偶有一个缓冲区
         ** Log Event 保存在一个 Binlog_cache_mngr 数据结构汇中,在该结构中有两个缓冲区,一个是 stmt_cache,用来存放不支持事务的信息;另一个 trx_cache,用于存放支持事务的信息。
        ③  事务在提交阶段会将产生的 Log event 写入到外部的 Binlog 文件中
         ** 不同事务以串行方式将Log event 写入到 Binlog 文件中,所以一个事务包含的Log event 信息在 Binlog 文件中是连续的,中间不会插入其他事务的Log event。Binlog是引擎插件上层的功能,事务提交第一个就会调用Binlog的功能接口,然后再调用其他存储引擎的功能接口。所以先写 Binlog,然后在执行 InnoDB 的 redo log / undo log 和脏页刷新操作。

四、Binlog文件操作

1、查看Binlog的状态

方法一:show variables like "log_bin";方法二:show variables like "%log_bin%";

示例图:

Tip:默认情况下, log_bin  的值是 OFF 状态的哦

2、开启Binlog功能

正常情况下,我们使用如下命令即可搞定,但是这次好像不行了哦,需要我们去直接修改配置文件

mysql> set global log_bin=1;
ERROR 1238 (HY000): Variable 'log_bin' is a read only variable

遇到这种错误,我们接下来需要修改 my.cnf <MAC系统> 或者 my.ini<Windows系统> 配置文件,在 [mysqld] 下面增加 log-bin=mysql-bin  后,重启MySQL服务即可

3、查看都有哪些日志文件

方法一:show binary logs;方法二:show master logs;

4、查看当前正在操作的日志

show master status;

5、查看当前日志中有哪些事件

''' 查看当前日志中有哪些事件 '''show binlog events;''' 查看当前指定日志文件  '''show binlog events in 'mysql-bin.000005';

 Tip:上面两个图只要细心的话就会发现,上一个事件的结束位置,就是下一个事件的开始位置,在后面恢复删除数据库的操作会用到这个哦

6、删除日志文件的三种方式

''' 删除指定的日志文件 '''
purge binary logs to 'mysql-bin.000003';''' 删除指定时间之前的文件 '''
purge binary logs before '2021-12-08 00:00:00';''' 清除所有日志文件 '''
reset master;

示例效果展示:

目前已经存在的日志文件,接下来对 "mysql-bin.000003" 日志文件进行删除

删除12月8号之前的文件和清除所有文件

7、查看和修改日志文件的有效期

''' 查看日志文件的有效期 '''
show variables like '%expire_logs_days%';''' 默认有效期为 0,表示 Binlog 日志的自动清理功能是没有启用的 '''''' 设置日志文件的有效期(启用日志自动清理功能),设置为2 表示超出2天,Binlog文件会自动删除 '''
set global expire_logs_days=2;

示例效果图:

8、查看日志文件的详细信息

Tip:如果想要查看日志文件的详细信息的话,我们需要离开MySQL的命令行,回到系统中的终端命令行来进行,找到安装MySQL时的路径下的 data 目录,会发现我们的日志文件
mysql-bin.000001接下来,我们在终端输入命令就可查看日志文件的详细信息了哦,里面包含了每条操作记录的详细时间,后面我们也可以通过这个时间来恢复删除的数据库

'''
在MySQL的 data 目录下执行下面的命令,来查看指定日志文件的详细信息可能有的小伙伴输入这个命令后,看不到详细的信息内容,这个时候就需要用 ls -la 来查看下
日志文件的权限,修改下权限即可哈
sudo chmod 权限 文件名
'''
mysqlbinlog 'mysql-bin.000001'

示例效果:

9、对删除数据库的恢复具体操作

删除数据库恢复的具体操作

数据库误删除后的两种恢复方法(一)日志操作篇相关推荐

  1. sdhc卡文件丢失常见原因和两种恢复方法

    sdhc卡作为sd卡的继任者,主要有容量/速度等级高.支持文件格式和兼容的机器多等特征,通常被用于存储大量文件的设备中,比如松下照相机.但是sdhc卡跟其他存储设备相似,也会因各种原因导致重要数据丢失 ...

  2. win10专业版开机画面模糊_Win10系统登录背景变模糊的两种恢复方法

    Win10系统开机到登录界面时背景总是很模糊,看着一点也不清晰,也不清楚哪里出现问题.即使恢复锁屏登录时设置了好看的登录背景也白搭,有什么办法能解决?其实旧版本中是清晰的也是微软刚改的,大家不妨通过下 ...

  3. u盘系统文件删除后的五种恢复方法

    U盘是我们日常生活中使用较为普遍的移动存储设备,由于其便携性和易用性广受人们的欢迎.然而,在我们使用U盘的过程中,经常会出现误删文件的情况,例如本来要作为启动盘的u盘,误删里面的系统文件怎么办?当U盘 ...

  4. Linux系统密码忘记后的五种恢复方法

    一. lilo引导 1. 在出现 lilo: 提示时键入 linux single Boot: linux single 2. 回车可直接进入linux单用户模式 3. vi /etc/passwd ...

  5. MySQL数据库root账户密码忘记两种处理方法转载

    本文转自:http://blog.51cto.com/lizhenliang/1977881 方法1: 1.停止MySQL服务 1 # kill `cat /var/run/mysqld/mysqld ...

  6. mysql数据库密码转换_MySQL数据库root账户密码忘记两种处理方法转载

    方法1: 1.停止MySQL服务# kill `cat /var/run/mysqld/mysqld.pid` 或者# pkill mysqld 2.创建一个密码赋值语句的文本文件 # vi mysq ...

  7. afudos备份bios不动_bios刷坏后的两种解决方法

    通常主板新的BIOS可以修正旧版中BIOS的一些BUG,纠正对某些硬件和软件的兼容问题,添加新硬件的支持等等,所以有时我们需要刷新BIOS.但刷新主板BIOS实际上是存在一定风险的,虽然现在各主板厂商 ...

  8. mysql system账户密码忘记了_MySQL数据库root账户密码忘记两种处理方法(保有效)...

    方法1: 1.停止MySQL服务 kill cat /var/run/mysqld/mysqld.pid 或者 pkill mysqld 2.创建一个密码赋值语句的文本文件 vi mysql-init ...

  9. [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)...

    /// <summary> /// 通过调用MSSQL的SQLDMO.DLL文件来实现备份数据库 /// 1.首先在在项目中引用SQLDMO.DLL文件. /// 2.在引用中的SQLDM ...

最新文章

  1. docker desktop使用入门
  2. Github | NumPy手写全部主流机器学习模型
  3. 在IOS开发中根据(id)sender获取UIButton的信息
  4. hbase java框架_Hadoop学习笔记—15.HBase框架学习(基础实践篇)
  5. 深度学习CTR模型最全演化图谱 [王喆观点]
  6. 测试:abstract class不允许出现在Angular依赖注入框架的providers区域内
  7. 861. Score After Flipping Matrix
  8. Java设计模式应用到数据库_Java设计模式在数据库编程中的应用研究
  9. Python XML解析器– ElementTree
  10. Java ResultSet教程
  11. 065_VFPage中CallBack回调函数的解释
  12. RAC连接时的2种方式Connect Time Failver和taf
  13. java session 永不过期_java设置配置session过期时间的方法
  14. iPhone模拟器突然开始运行非常慢
  15. 瑞幸咖啡上市被评“蒙眼狂奔”,CEO钱治亚回答:狂奔是真的,但并非蒙眼
  16. 8086的两种工作模式_8086系统中最小模式与最大模式两种工作方式的主要区别是什么?...
  17. Arcpy基础入门-4、arcpy工具进阶
  18. RADIUS协议 [收藏]
  19. python cv2画点_opencv-python鼠标画点:cv2.drawMarker()
  20. 【总结】线性代数的本质 - 2

热门文章

  1. 高可用性系统在大众点评的实践与经验
  2. 2017年2月12日GRE考试报名费用公布
  3. Mysql 通过 binlog日志 恢复数据(数据搞丢看过来)
  4. 什么是阿里云备案服务号及相关疑问解答
  5. java 视频系统_java web电影网视频点播系统
  6. nasm纠正性训练指南pdf_打开部队军事体能训练科学化的钥匙军人身体运动功能评估(EMPF)...
  7. 惠普激光打印机硒鼓加碳粉图解篇
  8. 100多个神奇网站,学习娱乐大全,总有一款适合你。。。
  9. 影视金曲-爱你一生嫌未够_昆仑奴插曲》
  10. matlab计算截断误差,Matlab相位截断误差仿真解说.doc