经过 MySQL 的二进制日志恢复数据库数据

统环境:html

操做系统:CentOS 6.5 X64 (虚拟机);mysql

Web 服务:PHP+MySQL+apache;linux

网站:为方便,直接在本地用蝉知系统搭建一个演示站点;sql

操做步骤数据库

一、开启 binlog 功能及基本操做apache

要使用 MySQL 的 binlog 日志功能,首先要在 MySQL 的配置文件中开启该功能,操做很简单。找到 MySQL 的配置文件,在文件中添加一行 log_bin = mysql-bin 便可。其实在我安装的各类 MySQL 环境中,该功能一般都是默认开启的。服务器

开启 binlog 功能后,在 MySQL 的数据库目录下就会有诸如 mysql-bin.00000一、mysql-bin.000002等文件,这就是 MySQL 的二进制日志文件。每当 MySQL 启动或手动刷新日志后都会新建一个二进制日志文件。测试

首先咱们 MySQL 命令行中,用 show master logs 命令查看已有的 binlog 文件。网站

经过 MySQL 的二进制日志恢复数据库数据经过 MySQL 的二进制日志恢复数据库数据

二、往站点添加数据操作系统

在网站后台文章模块里,我添加了几条测试数据。

经过 MySQL 的二进制日志恢复数据库数据经过 MySQL 的二进制日志恢复数据库数据

三、刷新 binlog 日志

此前 MySQL 的 binlog 文件为 mysql-bin.000001,而且在网站后台往数据库中添加了三篇文章。如今咱们刷新 binlog 日志,会生成新的 mysql-bin.000002 文件,以下:

flush logs;
show master logs;

经过 MySQL 的二进制日志恢复数据库数据经过 MySQL 的二进制日志恢复数据库数据

四、删除数据

这里我把刚才添加的三篇文章都删除掉。

五、binlog 日志内容解析

MySQL 的二进制日志文件记录的 MySQL 的操做,好比刚才的删除操做,咱们来看下日志文件的具体内容。

使用 MySQL 的 mysqlbinlog 命令:

mysqlbinlog /data/mysql/mysql-bin.000002

注意:由于我本地 mysqlbinlog 没法识别 binlog 配置中的 default-character-set=utf8,因此这里我在命令中加上了 –no-defaults才起做用,你们引觉得鉴。

经过 MySQL 的二进制日志恢复数据库数据经过 MySQL 的二进制日志恢复数据库数据

下面是日志内容部分截图:

经过 MySQL 的二进制日志恢复数据库数据经过 MySQL 的二进制日志恢复数据库数据

六、恢复指定数据

在经过 MySQL 的 binlog 日志恢复数据时,咱们能够指定恢复到具体时间点,这有点像服务器快照管理。因此咱们如今要恢复刚才删除的那篇文章,能够从删除以前找一个时间点,并恢复到那个时间点便可。

有关 mysqlbinlog 命令的使用方法,咱们能够经过 mysqlbinlog 的帮助命令进行查看,以下:

mysqlbinlog –no-defaults –help

经过 MySQL 的二进制日志恢复数据库数据经过 MySQL 的二进制日志恢复数据库数据

如帮助文档所示,能够经过指定时间或指定位置来恢复数据,这里我以指定时间为例给你们演示。

咱们来查看下日志文件 mysql-bin.000001,以下:

mysqlbinlog -no--defaults /data/mysql/mysql-bin.000001

经过 MySQL 的二进制日志恢复数据库数据经过 MySQL 的二进制日志恢复数据库数据

经过前面操做步骤咱们知道,在删除数据以前,咱们生成了 mysql-bin.000002 日志文件,因此咱们只要恢复到这个时间点便可,上图中我已找到了这个时间。

命令以下:

mysqlbinlog –no-defaults –stop-datetime=’2017-04-11 09:48:48’/data/mysql/mysql-bin.000001 |mysql –uroot –p123456

这时咱们在看后台,发现刚才删除的三篇文章都已恢复回来了,从而到达咱们指望的目的。

本文地址:http://www.linuxprobe.com/mysql-recovering-data.html

相关文章
相关标签/搜索