什么是二进制日志:

二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,但是,不包括查询!

二进制日志有哪些功能:

二进制日志有着数据复制和数据恢复的功能,可以将一些误删除的数据恢复

注意:

开启二进制日志会有1%的性能消耗!

查看二进制日志是否开启:

show variables like 'log_bin%';

开启二进制日志 :

我是将二进制日志放在/usr/local/mysqlData/log_bin下面的

注意:需要将文件夹的权限给mysql,不然会报如下错误:

chown -R mysql:mysql log_bin/

vim /etc/my.cnf ,加入下面两个配置:

log-bin=/usr/local/mysqlData/log_bin/logbin
server-id=1

然后重启mysql服务器,这时候查看发现二进制日志已经开启

查看所有的binlog日志列表:

 show master logs;

刷新二进制日志:

刷新二进制日志其实也就是将当前日志截断,然后生成一张新的二进制日志文件,

重启mysql服务也会重新生成一个binlog日志。

flush logs;

如图所示,刷新之后又新建了一个logbin.000002的日志。

重置(清空)二进制日志文件:

reset master

如上图所示,reset之后又重新生成了二进制文件,从头开始。

模拟数据误删除如何恢复

下面建一个mdc库里面建一张test表插入两条数据,如下图所示:

然后备份mdc库的test表:

mysqlData]# mysqldump -uroot -p'Qqmima917@' mdc test --single-transaction --master-data=1 --flush-logs > `date +%F`-mdc_test.sql;

然后继续插入几条数据:

insert into mdc.test values (3,'xiaomao'),(4,'lisi');

然后删除整张表:

drop table mdc.test;

然后查看二进制日志,发现下面有三个二进制文件:

使用mysqlbinlog 查看具体文件信息:

mysqlbinlog logbin.000003

但是这样看上去比较难受,我们可以把二进制日志文件导出成普通文件查看:

mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000002 > mysqlbin.sql

由上面看出000002文件里记录了添加操作,000003里面记录了drop操作。

现在恢复数据:

我们在使用mysqldump恢复的时候最好关闭binlog,因为恢复过程本身就是批量导入的过程,也会产生大量的binlog,其实这些binlog是无用的,会减慢恢复的速度。

关闭binlog恢复数据步骤:

登录到mysql中,临时关闭binlog:

set sql_log_bin=0;

然后使用source 命令恢复数据,注意:必须在mysql中执行恢复,因为这个关闭binlog是临时的,只在当前会话起作用。

source /usr/local/mysqlData/2019-10-24-mdc_test.sql

查询数据,发现备份前的数据已经恢复了,但是备份之后的数据没恢复。

下面就根据logbin恢复后添加的两条数据,

找出关键字的行数:

mysqlbinlog --no-defaults logbin.000002 | cat -n | grep -iw 'drop'

我们发现drop语句在logbin.000003文件的52行

然后查出drop语句的position

mysqlbinlog --no-defaults logbin.000003 | cat -n | sed -n '30,52p';

发现我们在493的位置删除了这个表,所以我们需要恢复的binlog文件有两个,一个是logbin.000002整个文件以及logbin000003文件到493为止。

​mysqlbinlog logbin.000002 --stop-position="493" logbin.000003 | mysql -uroot -pQqmima917@​

然后查看数据:

发现数据已经恢复回来了!大功告成

如果需要恢复某一段的数据,则可以使用--start-position参数,如下图所示:

​mysqlbinlog --start-position="154" --stop-position="493" logbin.000003 | mysql -uroot -pQqmima917@​

mysql利用二进制日志binlog恢复误删除操作相关推荐

  1. mysql二进制日志转sql_MySQL使用二进制日志来恢复数据(转)

    MySQL使用二进制日志来恢复数据(转) mysqlbinlog工具的使用,大家可以看MySQL的帮助手册.里面有详细的用, 在这个例子中,重点是--start-position参数和--stop-p ...

  2. mysql临时开启二进制_关于MySQL二进制日志Binlog的认识

    MySQL的二进制日志可以说或是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是失误安全型的. 在 ...

  3. 认真学习MySQL中的二进制日志(binlog)与中继日志(Relay log)

    binlog即binary log,二进制日志文件,也叫作变更日志(update log).它记录了数据库所有执行的DDL和DML等数据库更新事件的语句,但是不包含没有修改任何数据的语句(如数据查询语 ...

  4. mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据

    经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...

  5. mysql dump 二进制_mysqldump+二进制日志备份恢复

    mysql备份和恢复 完全备份.部分备份 完全备份:备份整个数据集 部分备份:只备份数据子集 完全备份.增量备份.差异备份 增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据 差 ...

  6. mysql 二进制日志 解析c++_mysql二进制日志文件恢复数据库

    二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所 ...

  7. mysql dba系统学习(6)二进制日志binlog之二

    MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement.总结一下这三种格式日志的优缺点. MySQL ...

  8. mysql row 日志格式_MySQL 中二进制日志 (binlog) 3 种不同的格式(Mixed,Statement,Row)...

    MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement.总结一下这三种格式日志的优缺点. MySQL ...

  9. mysql dba系统学习(5)二进制日志binlog之一

    一,二进制日志文件的作用 Mysql的二进制日志记录的是所有mysql数据库发生变更的信息,因此对数据库非常重要,二进制日志的作用我概括了一下主要包含如下几个方面: 1.可以用于数据库基于时间点的还原 ...

  10. mysql使用二进制日志恢复数据

    本文来说下如何使用mysql使用二进制日志恢复数据,再window的环境下. 文章目录 开启二进制日志 重启mysql服务 配置信息 开启二进制日志 在mysqld的配置节点下添加如下配置 log_b ...

最新文章

  1. 架构探险笔记5-使框架具备AOP特性(下)
  2. window10电脑远程没有oracle,win10 不安装oracle plsql连接远程oracle
  3. Dos批处理常用命令大全扫盲篇
  4. iOS之深入解析预乘透明度Premultiplied Alpha
  5. 2021大厂面试高频100题最新汇总(附答案详解)
  6. snmp服务中snmpwalk命令常用方法总结
  7. apscheduler 脚本执行失败_在脚本中使用 Bash 信号捕获 | Linux 中国
  8. Springboot+Mybatis+PageHelper 分页、排序
  9. 带你梳理Roach全量恢复的整体流程
  10. Mate 30 不预装任何谷歌应用;阿里巴巴发布新“六脉神剑”;VS Code 1.38 发布 | 极客头条...
  11. java设置user.dir_使用java系统属性user.dir读取配置文件
  12. DataGridView的DataGridViewComboBoxColumn列点击后触发其他方法
  13. SQL基本语法总结(含SQL代码)
  14. 国家气象数据中心网站
  15. 石油化工行业的MES系统解决方案
  16. 2022年NPS基准:NPS分数达到多少算好?
  17. document 常用事件
  18. 一行代码实现curry化
  19. OpenAI gym Atari游戏的环境设置
  20. 多个路由器无线桥接,共享网络

热门文章

  1. 【190302】VC+ 视频捕捉与录像+实例源码源代码
  2. XTDRONE:ego_planner三维运动规划
  3. 【原型】Axure基本入门
  4. android 调色板,所不了解的Android调色板
  5. 单例设计模式,写出几个例子
  6. LaTex常用特殊符号对应表
  7. 把自然语言文本转换为向量 | NLP基础
  8. SQL 分组排序group by
  9. 科技爱好者周刊:第 74 期
  10. 配置网络地址转换NAT技术实验