mysql5.7使用binlog 恢复数据的方法

第一步:保证mysql已经开启binlog

show variables like '%log_bin%';
log_bin 为 on是开启。

第二步:进入binlog文件目录,找到二进制日志文件

mysql> show binary logs; #获取binlog文件列表
mysql> show master status; #查看当前正在写入的binlog文件
mysql> reset master; 重置binlog

第三步: 通过mysqlbinlog工具命令查看数据库增删改查记录(必须切换到mysqlbinlog目录才有效)或者直接指定binlog

例子1:查询2021-3-12 14:00:00到2021-3-12 14:03:00 数据库为 g_xinxiangshop的操作日志,输入如下命令将数据写入到一个备用的txt文件中

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

例子2:查询2021-3-12 14:00:00到2021-3-12 14:03:00 数据库为 g_xinxiangshop的操作日志,并且过滤出 只包括 g_user表数据的操作记录 ,输入如下命令将数据写入到一个备用的txt文件中

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 | grep g_user > /tmp/binlog.txt

例子3:查询2021-3-15 15:25:00到2021-3-15 15:35:00 数据库为 g_shoptest 的操作日志,并输出到屏幕上
/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_shoptest --start-datetime=“2021-3-15 15:25:00” --stop-datetime=“2021-3-15 15:35:00” /data/mysql/mysql-bin.000001 |more

图片和例1、例2内容一样 看到了truncate操作 和记录点 就可以做恢复操作了!

第四步:测试利用bin_log恢复数据

登录mysql
测试

1、 reset master; 重置binlog并重新生成记录日志

2、 测试某个表 插入一条数据 然后不小心删除了。

3、 查看bin-log 命令:show binlog events in ‘mysql-bin.000001';

如上图
我们看到删除点在928到 1294 ;之前的新增的数据 在154到520

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 154 --stop-position 520 | mysql -uroot -p g_shoptest

执行完毕之后 去看看删除那条数据吧 又回来了

binlog命令

1.最长用的就是回复指定数据端的数据了,可以直接恢复到数据库中:

mysqlbinlog --start-date="2021-3-12 14:00:00" --stop-date="2021-3-12 14:03:00" mysql_bin.000001 |mysql -uroot -p123456 

2.指定开始\结束位置,从上面的查看产生的binary log我们可以知道某个log的开始到结束的位置,我们可以在恢复的过程中指定回复从A位置到B位置的log.需要用下面两个参数来指定:

  • --start-positon="50" //指定从50位置开始
  • --stop-postion="100"//指定到100位置结束

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 7903538 --stop-position 7904498|mysql -uroot -p123456

**常见错误 ERROR: Error in Log_event::read_log_event(): ‘Found invalid event in binary log', data_len: 31, event_type: 35

*问题为mysqlbinlog版本所导致

查看当前os使用的mysqlbinlog

shell> which mysqlbinlog
/usr/bin/mysqlbinlog

查看mysql当前使用的mysqlbinlog

±--------------±------------------+
| Variable_name | Value |
±--------------±------------------+
| basedir | /usr/local/mysql/ |
±--------------±------------------+

mysql> show variables like ‘basedir';

对比两个版本

shell> /usr/bin/mysqlbinlog --version
shell> /usr/local/mysql/bin/mysqlbinlog --version

解决此问题指定mysqlbinlog路径即可

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

到此这篇关于mysql5.7使用binlog 恢复数据的方法的文章就介绍到这了,更多相关mysql binlog 恢复数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL通过binlog恢复数据

    mysql 日志文件 任何成熟软件都会有一套成熟的日志系统,当软件出现问题时,这些日志就是查询问题来源的宝库.同样,mysql也不例外,也会有一系列日志记录mysql的运行状态. mysql主要有以下几种日志: 错误日志:记录mysql运行过程中的错误信息 一般查询日志:记录mysql正在运行的语句,包括查询.修改.更新等的每条sql 慢查询日志:记录查询比较耗时的SQL语句 binlog日志:记录数据修改记录,包括创建表.数据更新等 这些日志均需要在my.cnf文件进行配置,如果不知道mysq

  • 解说mysql之binlog日志以及利用binlog日志恢复数据的方法

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废话不多说,下面是梳理的binlog日志操作解说: 一.初步了解binlog MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. ---

  • mysql5.7使用binlog 恢复数据的方法

    第一步:保证mysql已经开启binlog show variables like '%log_bin%'; log_bin 为 on是开启. 第二步:进入binlog文件目录,找到二进制日志文件 mysql> show binary logs; #获取binlog文件列表 mysql> show master status: #查看当前正在写入的binlog文件 mysql> reset master; 重置binlog 第三步: 通过mysqlbinlog工具命令查看数据库增删改查记

  • MySQL 两种恢复数据的方法

    一 前言 前一段时间接二连三的出现开发人员在测试环境和生产误操作导致数据库误删除/更新,对DBA而言,回滚数据着实是一件头疼的事情,凡涉及到恢复线上数据必然对应用带来一定的影响.大多数情况是开发误操作delete数据,update多数行,根据之前的操作经验,本文介绍常用的恢复方法. 二 常用的恢复方式 2.1 利用备份恢复 使用这种方式的前提必须有最近的备份集或者知道出现误操作起始的binlog 位点或者GTID,利用备份集恢复到中间的机器上,然后利用MySQL的slave 特性 START S

  • MySQL数据库通过Binlog恢复数据的详细步骤

    目录 Mysql Binlog 简介 开启Binlog 使用Binlog恢复数据 附录 总结 Mysql Binlog 简介 Mysql Binlog是二进制格式的日志文件Binlog是用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复 开启Binlog 查看是否打开了Binlog [ON表示已经打开 OFF表示关闭 默认关闭状态] show variables like ‘%log_bin%’; 开启Binlog [修改完以后重启服务] 方法1

  • window环境redis通过AOF恢复数据的方法

    首先要启动AOF持久化配置,在redis.windows-server.conf配置文件中做出如下更改 ................ appendonly yes # The name of the append only file (default: "appendonly.aof") appendfilename "appendonly.aof" ..................................... # appendfsync alwa

  • 一步步教你如何使用mysql binlog恢复数据

    如果想通过 mysql 的 binlog 恢复数据,首先要开启 binlog .这里搭建一个测试的环境,了解一下 mysql binlog 是如何恢复数据库的.原理比较简单,binlog 会存储mysql中变化的数据,比如你创建了一个数据库,写入了一些数据,这些都会存储在 mysql 的 binlog 中. 需要恢复的时候就找到,两个位置,一个起始位置,一个结束的位置.结束的位置,一半是数据被破坏或者删除前的位置.mysql 8 默认已经开启了 binlog mysql> show variab

  • SqlServer2008误操作数据(delete或者update)后恢复数据的方法

    实际工作中,有时会直接在数据库中操作数据,比如对数据进行delete或者update操作,当进行这些操作的时候,如果没有加上 where条件或者where条件不合理,那么导致的结果可想而知,如果操作的又是线上数据库,那么这个后果将会非常严重. 当事情发生后,我们要想办法补救,针对于sqlserver2005数据库,有个很出名的工具Log Exploer.具体操作使用大家可以自行搜索;针对于sqlserver2008也有这样的工具,但是大多是需要付费的...我们尝试用 sqlserver的事务日志

  • MongoDB利用oplog恢复数据的方法

    目录 数据全备 模拟故障 写入数据 模拟误操作 恢复步骤 备份oplog 解析oplog 将oplog备份和全备复制到standalone机 查找误操作时间点 进行数据恢复 检查恢复结果 当我们对数据出现误操作的时候,可以利用oplog恢复数据. 使用前提: 1.环境是副本集 2.必须有全备 2.全备后oplog没有被覆盖 数据全备 mongodump -h 172.16.254.133 --port 27017 -o /mongodb/backup/backup 模拟故障 写入数据 hando

  • mysql5.7.33误删除ibdata文件找回数据的方法

    一.场景说明: 很多时候因为 MySQL 数据库不能启动而造成数据无法访问,但应用的数据通常没有丢失,只是系统表空间等其它文件损坏了,或者遇到 MySQL 的 bug. 这个时候如果没有备份,很多人就以为数据丢失了,但实际上大部分时候数据还是有救的. 对于 MyISAM 引擎的表空间,直接把对应的数据文件拷贝到一个新的数据库就行了,数据就可以恢复了. 对于 InnoDB 引擎的数据库表空间可以采用传输表空间的方式把数据救回来. 前提是MySQL开启了参数 innodb_file_per_tabl

随机推荐