如何通过Mysql的二进制日志恢复数据库数据
经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响。所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlog)来恢复数据。
系统环境:
操作系统:CentOS 6.5 X64 (虚拟机);
WEB服务:PHP+Mysql+apache;
网站:为方便,直接在本地用蝉知系统搭建一个DEMO站点;
操作步骤:
1.开启binlog功能及基本操作;
2.往站点添加数据;
3.刷新binlog日志;
4.删除数据;
5.binlog日志内容解析;
6.恢复指定数据;
1.开启binlog功能及基本操作
要使用Mysql的binlog日志功能,首先要在Mysql的配置文件中开启该功能,操作很简单。找到Mysql的配置文件,在文件中添加一行”log_bin = mysql-bin”即可。其实在我安装的各种Mysql环境中,该功能通常都是默认开启的。
开启binlog功能后,在mysql的数据库目录下就会有诸如mysql-bin.000001、mysql-bin.000002等文件,这就是mysql的二进制日志文件。每当mysql启动或手动刷新日志后都会新建一个二进制日志文件。
首先我们mysql命令行中,用”show master logs”命令查看已有的binlog文件。

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

3.刷新binlog日志
此前mysql的binlog文件为mysql-bin.000001,并且在网站后台往数据库中添加了三篇文章。现在我们刷新binlog日志,会生成新的mysql-bin.000002文件,如下:
flush logs; show master logs;

4.删除数据
这里我把刚才添加的三篇文章都删除掉。
5.binlog日志内容解析
Mysql的二进制日志文件记录的mysql的操作,比如刚才的删除操作,我们来看下日志文件的具体内容。
使用mysql的mysqlbinlog命令:
mysqlbinlog /data/mysql/mysql-bin.
注意:因为我本地mysqlbinlog无法识别binlog配置中的default-character-set=utf8,所以这里我在命令中加上了” –no-defaults”才起作用,大家引以为鉴。

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

6.恢复指定数据;
在通过mysql的binlog日志恢复数据时,我们可以指定恢复到具体时间点,这有点像服务器快照管理。所以我们现在要恢复刚才删除的那篇文章,可以从删除之前找一个时间点,并恢复到那个时间点即可。
有关mysqlbinlog命令的使用方法,我们可以通过mysqlbinlog的帮助命令进行查看,如下:
mysqlbinlog –no-defaults –help

如帮助文档所示,可以通过指定时间或指定位置来恢复数据,这里我以指定时间为例给大家演示。
我们来查看下日志文件mysql-bin.000001,如下:
mysqlbinlog -no--defaults /data/mysql/mysql-bin.

通过前面操作步骤我们知道,在删除数据之前,我们生成了mysql-bin.000002日志文件,所以我们只要恢复到这个时间点即可,上图中我已找到了这个时间。
命令如下:
mysqlbinlog –no-defaults –stop-datetime=’-- ::’/data/mysql/mysql-bin. |mysql –uroot –p123456
这时我们在看后台,发现刚才删除的三篇文章都已恢复回来了,从而到达我们期望的目的。
总结:
本文和大家分享了如何通过mysql的二进制日志文件恢复数据。但还是要提醒大家,在平时要做好网站数据备份,现在的一些主流CMS建站系统都会内置数据库备份功能,比如这里我用的蝉知系统,数据是网站的命脉,做好数据备份以避免后期不必要的麻烦或损失。
如何通过Mysql的二进制日志恢复数据库数据的更多相关文章
- MySQL使用二进制日志恢复数据库
一.二进制日志简介 MySQL有不同类型的日志,其中二进制文件记录了所有对数据库的修改,如果数据库因为操作不当或其他原因丢失了数据,可以通过二进制文件恢复. 在my.ini文件中设置了log-bin, ...
- mysql根据二进制日志恢复数据/公司事故实战经验
根据二进制日志恢复 目的:恢复数据,根据二进制日志将数据恢复到今天任意时刻 增量恢复,回滚恢复 如果有备份好的数据,将备份好的数据导入新数据库时,会随着产生二进制日志 先准备一台初始化的数据库 mys ...
- mysql使用二进制日志恢复数据
一.恢复到某个二进制文件 1.开启二进制日志 在mysqld的配置节点下添加如下配置 log-bin="E:/Mysql57BinLog/binlog"(windows下的路径,l ...
- mysql学习------二进制日志管理
MySQL二进制日志(Binary Log) a.它包含的内容及作用如下: 包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE) 包含关于每个更新数据库( ...
- MySQL的binlog日志恢复(转)
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日 ...
- mysql数据安全之利用二进制日志mysqlbinlog备份数据
mysql数据安全之利用二进制日志mysqlbinlog备份数据 简介:如何利用二进制日志来备份数据 什么是二进制日志: 二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,但是, ...
- mysql通过data目录恢复数据库
mysql通过data目录恢复数据库 阅读:次 时间:2010-03-24 06:53:30 字体:[大 中 小] 重装系统后,MySQL服务没有了,但是数据库的文件还在,这个时候我想 ...
- SqlServer 通过日志恢复数据库
前期工作 查看数据属性,确保下条件: 1.数据库属性->选项->恢复模式=完整 2.建好库以后.一个数据库完整的数据备份 3.到出事期间日志没有你间断 4.记录出事的准确时间 一.数据准备 ...
- MYSQL使用二进制日志来恢复数据
mysqlbinlog工具的使用,大家可以看MySQL的帮助手册.里面有详细的用, 在这个例子中,重点是--start-position参数和--stop-position参数的使用. ·--star ...
随机推荐
- CORS(跨域资源共享)
Cors(Cross-origin Resource Sharing)基本思想是使用自定义的HTTP头部允许浏览器和服务器相互了解对方,从而决定响应成功与否. CORS与JSONP对比: 1.JSON ...
- 【mac版】前端开发工具整理
整理了一些日常工作中涉及到的工具,下载链接:https://pan.baidu.com/s/1kUD60a7#list/path=%2F 编辑器 Webstorm 软件下载及常用操作 webstorm ...
- 基于Selenium2+Java的UI自动化(8)- 显式等待和隐式等待
一.隐式等待 package com.automation.waits; import java.util.concurrent.TimeUnit; import org.openqa.seleniu ...
- wemall app商城源码中ScrollView中嵌套ListView主要代码
很多时间我们在scorllview中嵌入listview的时候,都只能看到listview显示一行数据,而我们的要求是显示多行,即我们数据的行数, 当ListView的高度设定一定的值时,ListVi ...
- win8和ubuntu双系统
硬盘安装的话只要分够内存和做好开机启动项就好了,u盘安装要注意分区(挂载)了推荐: http://wenku.baidu.com/view/5052f19b51e79b8968022623.html ...
- JavaScript tips:数组去重
1.实现目标:数组去重 2.实现思路: (1)创建新数组. (2)遍历原数组,判断当前被遍历元素是否存在于新数组,如果存在于新数组,则判断当前被遍历元素是重复的:如果不存在于新数组,则判断当前被遍历元 ...
- 手动的写一个structs
为了更好的学习框架的运行机制,这里开始学习框架之前,介绍一个简单的自定义的框架. 需求: 登录:id:aaa,pwd:888登录成功之后,跳转到,index.jsp页面并显示,欢迎你,aaa 注册,页 ...
- windows phone 8.1 开发:后台任务详解
原文出自:http://www.bcmeng.com/backtask/ 小梦今天给大家分享一下windows phone 8.1中的后台任务如何实现,许多应用都会用到后台任务,所以我们必须得掌握. ...
- MFC画笔作用域的问题
今天发现了程序中的一个BUG.功能是在鼠标经过图形时,对图形进行加粗重绘.默认使用白色画刷.为防止白色背景下看不清,在白色背景下改用黑色画刷.代码如下 CPen* pOldPen;if (pDC-&g ...
- CSS.04 -- 浮动float、overflow、定位position、CSS初始化
标准流:行内/行内块元素横向有序排列 : 块元素纵向有序排列. 浮动:Float 语法:float:left/right : 设置浮动的元素,脱离标准流 浮动的框可以向左或向右移动,直到它的外边缘碰 ...