mysql用binlog文件进行数据恢复

MySQL备份一般采取全备份加日志备份的方式,比如每天执行一次全备份,每小时执行一次二进制日志备份。这样在MySQL Server故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间。用来进行全备和日志备的工具各种各样,各有其特色,在这里不做描述。本文主要讲解一下在回复完全备份后,如何应用备份的二进制日志来将数据恢复到指定的位置或时间点。

这里有个十分重要的工具——mysqlbinlog,专门用来查看二进制日志。我们以一些列子来说明问题:

先看看如何在MySQL Server中直接查看有哪些二进制日志文件及文件中包含哪些事件。

首先,查看正在使用的binlog日志

mysql> show master status;

mysql> show binlog events in "mysql-bin.000002";

这条命令查看记录在binlog日志中执行的sql命令。

例如:先创建一个数据库,在库中建一个表,表中添加数据。

mysql> create database user_test;

Query OK, 1 row affected (0.00 sec)

mysql> use user_test;

Database changed

mysql> create table test(id char(3),name varchar(20),age varchar(3));

Query OK, 0 rows affected (0.36 sec)

mysql> insert into test values(1,‘wangdi‘,27);

Query OK, 1 row affected (0.01 sec)

mysql> select * from test;

+------+--------+------+

| id   | name   | age  |

+------+--------+------+

| 1    | wangdi | 27   |

+------+--------+------+

1 row in set (0.00 sec)

这时删除数据库:

mysql> drop database user_test;

Query OK, 1 row affected (0.08 sec)

数据库删除之后,想要恢复查看binlog中的信息

mysql> show binlog events in "mysql-bin.000002";

找到文件中的sql语句,执行即可。

也可以应用mysqlbinlog工具

[[email protected] data]# /usr/local/mysql/bin/mysqlbinlog --start-position=4797 --stop-position=5425 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p

4797 是我创建数据库的节点,执行完命令后恢复数据库,但是这里只是恢复一个库,里面的表数据没有

[[email protected] data]# /usr/local/mysql/bin/mysqlbinlog --start-position=4954  --stop-position=5425 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p

4954 是我创建表的节点,执行完命令后恢复表结构,但是表里的数据没有

[[email protected] data]# /usr/local/mysql/bin/mysqlbinlog --start-position=5224  --stop-position=5425 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p

5224 是插入数据的语句,这样被删除的数据库就恢复了。

重新查看一下:

mysql> select * from test;

+------+--------+------+

| id   | name   | age  |

+------+--------+------+

| 1    | wangdi | 27   |

+------+--------+------+

时间: 2024-08-03 15:22:20

mysql用binlog文件进行数据恢复的相关文章

查看mysql二进制文件(binlog文件)

1.获取binlog文件列表 mysql> show binary logs;  2.查看当前正在写入的binlog文件 mysql>show master status: 3.查看指定binlog文件的内容 mysql>show binlog events [in 'log_name'] [FROM pos] [limit [offset,] row_count] 使用mysqlbinlog查看binlog 1.输出指定binlog文件内容 mysqlbinlog binlog文件 2

mysql 删除多余的bin-log文件

今天上班发现zabbix报警,打开报警页面看了下,说的是服务器的/分区低于20%. ssh到服务器上,查看结果发现是mysql的bin-log文件导致使用率低于20% mysql> system ls -lh total 8.5G -rw-rw---- 1 mysql mysql 1.6G May 21 10:09 ibdata1 -rw-rw---- 1 mysql mysql 5.0M May 21 10:09 ib_logfile0 -rw-rw---- 1 mysql mysql 5.0

mysql数据库误删除后的数据恢复操作说明

在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办??? 下面,就mysql数据库误删除后的恢复方案进行说明. 一.工作场景(1)MySQL数据库每晚12:00自动完全备份.(2)某天早上上班,9点的时候,一同事犯晕drop了一个数据库!(3)需要紧急恢复!可利用备份的数据文件以及增量的binlog文件进行数据恢复. 二.数据恢复思路(1)利用全备

【转&参考】MySQL利用frm和idb文件进行数据恢复

MySQL利用frm和idb文件进行数据恢复 源MySQL现状: 版本:5.6.* 存储引擎:innodb存储引擎 要恢复数据库:skill 重点要恢复表:slot_value 已有的文件: 备份了所有物理文件(含ibdata1和数据库skill整个目录) 友情提示:最好找个自己的开发机,自己额外搭一套MySQL数据库,以免因为共用mysql数据库而影响其他人. 1. 搭建MySQL,如果这步骤有疑问,出门左转有yum搭建各种版本数据库的操作步骤:http://www.cnblogs.com/z

mysql将bin-log日志文件转为sql文件

查看mysqlbinlog版本 mysqlbinlog -V [--version] 查看binlog日志开启状态 show variables like '%log_bin%'; mysql打开bin-log日志后,mysql数据库的非查询操作会将记录保存到bin-log文件中.一般bin-log日志文件不能打开查看的,需要用到mysql的工具进行.假设/mysql/data/目录中存放着二进制文件mysql-bin.000011.需要将日志文件mysql-bin.000011中关于数据库ti

mysql通过binlog日志来恢复数据

简介 在生产的过程中有这么一个业务场景:比如我在2016-11-19 09:30:00 通过mysqldump的方式备份了数据库,但是在2016-11-19 10:30:00的时候数据库崩溃了,如果通过我们的备份文件来恢复,也只能恢复到 2016-11-19 09:30:00 这个时间点,而9.30分到10:30分这一个小时的数据恢复不了,这时候我们可以通过mysql的binlog日志来恢复没有备份到的这一小时的数据. 1.开启mysql的binlog日志(默认情况下没有开启) #vim /et

MySQL的binlog数据如何查看

原创地址: http://blog.chinaunix.net/uid-16844903-id-3896711.html binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 基于语句,无法保证所有语句都在从库执行成功,比如update ... limit 1; 基于行,将每一次改动记为binlog中的一行.在执行一个特别复杂的update或者dele

Linux下面的mysql的bin-log恢复数据

转自:http://blog.sina.com.cn/s/blog_13dd6daa80102wbht.html 一.开启binlog日志: 编辑打开mysql配置文件my.cnf,在[mysqld]区块设置/添加 log-bin=mysql-bin  确认是打开状态(值 mysql-bin 是日志的基本名或前缀名),重启mysqld服务使配置生效.日志刷新命令:mysql> flush logs. 二.也可登录mysql服务器,通过mysql的变量配置表,查看二进制日志是否已开启 mysql>

MySQL借助ibd文件恢复数据技巧?

磁盘坏道.断电等意外不是常态,但遇上了就足够你"惊心动魄"!如果是数据库损坏造成的数据丢失,Binlog也不可用了,怎么办?为了在短时间内无损恢复数据以保证业务稳定性,除了利用binlog,我们还修炼了一招新的恢复技能! 还记得我们之前写过的<只需一招,让失控的研发爱上你>吗?前文提到过我们日常使用的比较多的两种数据库恢复方法是: 以上两种方法都可以实现实时性的回档,但是你会认为有了这两种技能就够了吗? 不-.! 在线上这种错综复杂的架构中,其实还有很多未知的原因,我们是没