mysql中bin-log在mysql默认状态下是没有打开的,我们要先打开mysql 开启bin-log功能,然后再通过备份的bin-log进行数据库恢复了。

具体的操作是通过mysqlbinlog这个指令来完成的

/mysql/bin/mysqlbinlog --database=fox --start-date="2013-01-22 5:00:00"  --stop-date="2013-01-22 9:00:00" /mysql/data/mysql-bin.000001 | /mysql/bin/mysql -u root -p123456 -f 

具体的参数看下名字就能明白

database:指定具体的数据库
start-date:开始时间
stop-date:结束时间
/mysql/data/mysql-bin.000001:

指定的日志文件

如果你没有备份数据的话,你就必须通过日志文件一个一个还原,记得顺序不能乱。如果你没有备份数据,日志又被部分删除的话,那么就悲剧了。因此,还原只是一种方法,最重要的还是定期备份数据。只要备份数据在,日志文件在,东西都可以解决。
同时记录一些操作日志的方法
查看所有日志:

show master logs;

当前使用的binlog文件

show binlog events g; 

产生一个新的binlog日志文件

flush logs;

删除所有二进制日志,并从新开始记录

flush logs;
reset master;

这里突然有一种想法,是否每次备份完数据以后就把之前的日志清理下,这样一旦发生问题,就可以从最近的日志开始还原。这个只是我的一种想法,有什么问题请指正。
同时大家如果希望不在错误操作delete这个可以在mysql启动的时候加入-U这个参数
启动MySQL的时候加上参数 -U

-U, –safe-updates Only allow UPDATE and DELETE that uses keys.

他的作用是防止执行delete的时候没带有条件语句,如果没加上where则语句不执行。

一次完整的Mysqlbin-log日志恢复过程实例

1).创建一个表:

mysql>usetest;
mysql>createtable t1(id int);
mysql>showtables;

2).添加两行数据:

mysql>insertinto t1 values(1);
mysql>insertinto t1 values(2);
mysql>select *from t1;

3).备份现有数据(09:30):

#mysqldump -uroot-p123456 test -l -F > /tmp/test.sql

4).在备份完后再添加三行数据(记录):

mysql>insertinto t1 values(3);
mysql>insertinto t1 values(4);
mysql>insertinto t1 values(5);

5).此时突然数据库损损坏或者认为删除:

mysql>droptable t1;

6).用已备份的test.sql来恢复数据库:

#mysql -uroot-p123456 test < test.sql

7).从bin-log日志恢复:

#/usr/local/mysql/bin/mysqlbinlog–no-defaults mysql-bin.000006|more//查看bin-log日志,在我的虚力机上bin-log日志从mysql-bin.000005开始
#/usr/local/mysql/bin/mysqlbinlog--no-defaults --stop-position=”272” mysql-bin.000006 |/usr/local/mysql/bin/mysql -uroot -p123456 //恢复bin-log日志

如果你没有开启bin日志我们可参考正同方法开启

一、 Mysqlbin-log 日志

1.开启Mysqlbin-log 日志

#vi/etc/my.cnf

[client]
#password =your_password
port =3306
socket =/tmp/mysql.sock
default-character-set-utf8
.......
[mysqld]
port= 3306
socket= /var/lib/mysql/mysql.sock
log-slow-queries=mysql-slowlog
log-error=mysql.err
log=mysql.log
log-bin=mysql-bin//删除#符号

2.查看二进制文件(mysql-bin.******)

#cd/usr/local/mysql/bin/ && ls

3.查看mysqbinlog日志是否开启

mysql>showvariables like “%log-bin%;

4.与Mysqlbin-log有关的日志操作

mysql>flushlogs;//此时就会多一个最新的bin-log日志
mysql>showmaster status;//查看最后一个bin日志
mysql>resetmaster;//清空所有的bin-log日志
mysql>mysqlbinlog–no-defaults mysql-bin.******|more//查看bin-log日志

扫码关注微信公众号

原文地址:http://www.android100.org/html/201406/20/28082.html

【转】【MySQL】mysql 通过bin-log恢复数据方法详解的更多相关文章

  1. Mysql自增主键ID重新排序方法详解

    Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键: ALTER TABLE `table_name` DROP `id`; 2 ...

  2. MySQL日志系统bin log、redo log和undo log

    MySQL日志系统bin log.redo log和undo log   今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...

  3. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!

    MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!2017年06月15日 19:59:44 蓝色-鸢尾 阅读数:2062版权声明:本文为博主原创文章,如需转 ...

  4. centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解

    centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...

  5. ContentProvider数据访问详解

    ContentProvider数据访问详解 Android官方指出的数据存储方式总共有五种:Shared Preferences.网络存储.文件存储.外储存储.SQLite,这些存储方式一般都只是在一 ...

  6. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

  7. 【HANA系列】SAP HANA XS使用JavaScript数据交互详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...

  8. JVM 运行时数据区详解

    一.运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域. 1.有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,所有的线程共享这些数据区. 2.第二种则 ...

  9. Java构造和解析Json数据的两种方法详解二——org.json

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...

随机推荐

  1. iOS文件解压&&数据加密

    一文件压缩.这里我们需要一个第三方SSZipArchive(需要添加libz.td) #import "ViewController.h" #import "SSZipA ...

  2. mvc4 用NPOI导出Excel

    第一次做数据导出Excel,刚看到这个的时候,首先想到的就是新建一个excel的文件,然后将它下载,后来询问别人,他们都推荐使用NPOI,发现这个很好用,就用博客记录一下 1.引用NPOI包 2.导出 ...

  3. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  4. DOS 下 mysql 导入.SQL

  5. Java基础知识学习(八)

    IO操作 5个重要的类分别是:InputStream.OutStream.Reader.Writer和File类 面向字符的输入输出流 输入流都是Reader的子类, CharArrayReader ...

  6. 10、技术经理要阅读的书籍 - IT软件人员书籍系列文章

    技术经理是项目组中的重要角色.他需要负责软件项目中的重要部分,如果项目组没有架构师的话,技术经理还需要担负起架构师的职责.同时,技术经理要对项目中的所有重要的技术问题进行处理. 但是,在项目组内部,软 ...

  7. 编写可测试的JavaScript代码

    <编写可测试的JavaScript代码>基本信息作者: [美] Mark Ethan Trostler 托斯勒 著 译者: 徐涛出版社:人民邮电出版社ISBN:9787115373373上 ...

  8. JavaScript Patterns 6.6 Mix-ins

    Loop through arguments and copy every property of every object passed to the function. And the resul ...

  9. 服务器磁盘扩展卷时遭遇“There is not enough space available on the disk(s) to complete this operation.”错误

    在ESX VM的一台服务器由于磁盘空间告警,打算决定给E盘扩展空间,增加20G的空间,在操作过程遭遇了Expanding Disk Volume gives error "There is ...

  10. 【API】获取优酷视频信息接口

    序:        自己的网站中需要接入一个视频模块,虚拟主机的空间小所以只能引用第三方的链接.感觉国内优酷好不错,所以查了一下优酷的接口. 0x00:        先去优酷API开放中心申请一个开 ...