`
7454103
  • 浏览: 128948 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

【收藏】mysql二进制日志文件恢复数据库

阅读更多

喜欢的在服务器或者数据库上直接操作的兄弟们你值得收藏下!不然你就“百撕不得骑jie ” (下联 你懂的!

                 -----(当然我也是在网上搜索的资料!自己测试了下!)

二进制日志的文件的作用

    mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句。如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合使用,即可再现用户操作,使数据库恢复。

二进制日志文件的弊端

二进制日志文件开启后,所有对数据库操作的记录均会被记录到此文件,

所以,当长时间开启之后,日志文件会变得很大,占用磁盘空间。

使用二进制日志文件恢复数据库

开启日志文件

mysql默认是不开启日志文件的功能的,需要我们手动开启。操作如下:

 

1、  打开mysql安装目录\my.iniwindows系统是my.ini文件,linuxmy.cnf文件)。

 

2、  找到[mysqld]这个标签,在此标签下面一行,添加语句:log-bin=binary-log。上面语句中,log-bin说明要开启二进制日志文件,binary-log是二进制日志文件的名字。

(测试的时候我设置的:log-bin=d:/mysql_log/logbin_ouyang.log)

 

3、  重启mysql服务。可以在mysql安装目录\data 文件夹下看到“binary-log.数字编号”文件,

   如binary-log.000001。以后每重启一次mysql服务,都会重新生成二进制日志文件,

   文件名中的数字编号依次递增。

(你的上一步给出的文件名,加了个序号 还有一个总的文件 index文件 如图1)

 

恢复数据库

使用日志文件恢复数据库必须要有一个数据库备份(只要是在二进制日志文件功能开启之后备份的就行)。恢复数据库时,可以通过时间恢复,也可以通过操作点恢复。

 

1、通过时间恢复方法如下:

如果我在2011-04-02 00:00:00时刻开启了二进制日志文件功能,并备份了数据库文件。且在2011-04-02 12:00:00数据库发生异常,需要恢复到2011-04-02 10:00:00。则操作如下:

l         用备份将数据库回复到2011-04-02 00:00:00时候的状态。

l         在命令行输入如下命令:

                   mysqlbinlog --stop-date="你想要恢复的时间"   日志文件的目录\binary-log.000001  | mysql -u root –p

                  (D:\mysql_log>mysqlbinlog logbin_ouyang.000007 --stop-date="2011-10-23 15:05:00"|mysql -uroot -proot)

 

这样,系统会自动执行从二进制日志有记录开始截止到2011-04-02 10:00:00,用户所做过的所有操作。与stop-date对应的,还有start-date属性,可以设定执行记录的开始时间。也可以两个属性都设置。

 

2、通过操作点恢复方法如下:

在命令行中输入mysqlbinlog D:\binary-log.000003 > D:\log.txt,执行后打开log.txt

查看里面语句,可以发现:在每个操作之前,都会有一个独特的编号,如下红字显示:

/*!*/;

# at 450 /*编号450*/

#110402 15:31:50 server id 1  end_log_pos 529          Query       thread_id=2     exec_time=0    error_code=0

SET TIMESTAMP=1301729510/*!*/;

DROP TABLE `jwc`

 

此编号随着操作数增多而变大。和时间一样是一个标记,通过操作点恢复的语句如下:

mysqlbinlog --stop-position="450" mysql安装目录\data\binary-log.000001  | mysql -u root –p

 

这样,系统会自动执行二进制日志中编号最低的语句到编号450语句。

stop-position对应的,还有start-position属性,可以设定执行记录的开始编号。

 

 

附:(你应该看看)

1.0       mysqlbinlog mysql自带的一个日志操作工具!

 

2.0       如果直接打开log文件 可能会是乱码,所以我们一般会:

      D:\mysql_log>mysqlbinlog logbin_ouyang.000003 >log_3.txt  复制下 然后用记事本打开!

   就可以清楚的看到 操作的编号了 或者说(行号)

 

3.0       如果发生了错误的操作!如果可以的话!你应该立马停止数据库!然后恢复数据!

 

4.0       如果只是去掉某一个语句,你可以选择恢复两次 ,如图:

  

 

    

     D:\mysql_log>mysqlbinlog logbin_ouyang.000009 --stop-position=10625|mysql -uroot

         -proot

      D:\mysql_log>mysqlbinlog logbin_ouyang.000009 --start-position=10843|mysql -uroo

          t –proot

5.0 如果发生 Could not read entry at offset 1478: Error in log format or read error. 类似的错误!

   请检查你的编号是否正确!注意这个编号 不是一些编辑器显示的那个行号哦,# at 450 /

经常delete update错了!所有给自己个文档!当然我也希望你永远的用不上这个文档 ! 周末愉快! (排版有的乱哈!多多包涵!)

2
5
分享到:
评论

相关推荐

    mysql二进制日志文件恢复数据库

     mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句。如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合...

    详解如何通过Mysql的二进制日志恢复数据库数据

    本篇文章主要介绍了详解如何通过Mysql的二进制日志恢复数据库数据,具有一定的参考价值,有兴趣的可以了解一下。

    polardbx-cdc是PolarDB-X的核心组件,负责全局二进制日志的生成、发布和订阅

    通过PolarDB-X CDC,PolarDB-X数据库可以提供与MySQL二进制日志完全兼容的二进制日志,可以 由 MySQL 二进制日志工具无缝使用。 并且可以通过MySQL复制协议扮演MySQL从站的角色。PolarDB-X CDC的核心功能包括:全局...

    mysql binlog(二进制日志)查看方法

    当您在MySQL中执行任何类型的恢复操作时,您还将处理二进制日志文件。 mysqlbinlog命令用于以可读的用户友好格式查看二进制日志的内容。 那么我们怎么获取查看mysql binlog(二进制日志)? 下面给大家介绍获取当前...

    MySQL二进制日志(binlog)开启、查看、截取

    mysql二进制日志记录了数据库所有变更类的操作日志主要有2个作用: MySQL主从配置 数据恢复 参数介绍 server_id=3 log_bin=/data/binlog/mysql-bin: /data/binlog:提前定制好的目录,而且要有mysql.mysql的权限 ...

    MySQL数据库:数据库日志管理.pptx

    若不指定目录,则在MySQL的data目录下自动创建二进制日志文件。 若日志路径指定为C:/appserv/MySQL/bin目录,添加以下一行: log-bin=C:/appserv/MySQL/bin/bin_log 保存,重启服务器。 用mysqlbinlog管理日志 ...

    mysql binlog二进制日志详解

    二进制日志的主要目的是在恢复使能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新。 2。二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。 不良影响: 运行服务器时若启用二进制...

    MySQL中二进制与重做日志文件的基本概念学习教程

    二进制日志的启动:配置参数log-bin[=name],如果不指定name,则默认二进制日志文件名为主机名,后缀名为二级制日志的序列号,所在路径为数据库所在目录。 以index为后缀的文件为二进制日志的索引文件,用来存储过往...

    MySQL中Binary Log二进制日志文件的基本操作命令小结

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库。用于slave端执行增删改,保持与master同步。 1.开启binary log功能  需要修改mysql的...

    mysql角色服务器,用于实现数据库主从复制,mysql集群搭建所用服务器

    1.当主库更新数据后,会实时的写入到二进制日志文件中 2.从库的IO线程,实时的监听主库的二进制文件,如果二进制文件发送了改变则启动线程进行读取修改后的内容. 3.通过IO线程将读取的二进制文件写入到中继日志中. 4....

    Go-GolangMySql二进制日志复制侦听器

    myreplication - Golang MySql二进制日志复制侦听器。支持基于声明和行复制。

    mysql binlog日志恢复【亲测有效,有例子实测】

    二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。 binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。不会...

    自动恢复MySQL数据库的日志文件思路分享及解决方案

    如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据。“mysqlbinlog:用于处理二进制日志文件的实用工具”。 要...

    MySQL日志和数据恢复

    MySQL日志和数据恢复,错误日志,二进制日志,查询日志,数据恢复。

    教你自动恢复MySQL数据库的日志文件(binlog)

    如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据。“mysqlbinlog:用于处理二进制日志文件的实用工具”。 要想...

    MySQL – binlog日志简介及设置

      mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了数据查询语句)信息。可以使用mysqlbin命令查看二进制日志的内容。 binlog 的作用 用于数据库的主从复制及数据的增量恢复。 ...

    MySQL_Cluster集群数据库误操作恢复方法研究

    对 MySQL Cluster 集群数据库误操作的一些预防措施和误操作后进行数据恢复的三种方案:通过解析二进制日志生成逆向操作脚本进行恢复、通过全库备份及二进制日志进行恢复、通过延迟备库及二进制日志进行恢复,并给出...

    解析mysql二进制日志处理事务与非事务性语句的区别

    在事务完成被提交的时候一同刷新到二进制日志。对于非事务性语句的处理。遵循以下3条规则: 1)如果非事务性语句被标记为事务性,那么将被写入事务缓冲。 2)如果没有标记为事务性语句,而且事务缓存中没有,那么...

Global site tag (gtag.js) - Google Analytics