当前位置:  数据库>mysql

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

    来源: 互联网  发布时间:2014-10-17

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

二进制日志的文件的作用

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

二进制日志文件的弊端

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

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

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

开启日志文件

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

1、  打开mysql安装目录my.ini(windows系统是my.ini文件,linux是my.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安装目录databinary-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错了!所有给自己个文档!当然我也希望你永远的用不上这个文档 ! 周末愉快! (排版有的乱哈!多多包涵!)


    
 
 

您可能感兴趣的文章:

  • 在cygwin中安装二进制版的MYSQL(4.0.21)报错
  • 如何在linux下用c语言以二进制形势向mysql中储存图片?紧急~!
  • 有关 linux下mysql 二进制版 安装 运行
  • 解析mysql二进制日志处理事务与非事务性语句的区别
  • python3图片转换二进制存入mysql
  • mysql binlog二进制日志详解
  • Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
  • Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)
  • java实现插入mysql二进制文件,blob类型,遇到问题及解决办法
  • MySQL数据库备份恢复程序 MySQLDumper
  • 我不小心用mysqlfront把一个mysql数据库删除了,能不能恢复(没有备份),大家一定要救我阿。
  • LINUX下如何恢复mysql数据库
  • mysql主从连接失败,怎样通过binlog日志恢复呢?
  • 在Win下mysql备份恢复命令
  • mysql备份恢复mysqldump.exe几个常用用例
  • linux下的mysql数据恢复
  • MySQL数据库备份与恢复方法
  • 如何恢复Mysql数据库的详细介绍
  • linux下恢复数据急问--supplied argument is not a valid MySQL-Link resource
  • MYSQL使用.frm恢复数据表结构的实现方法
  • 解析Mysql备份与恢复简单总结与tee命令的使用介绍
  • 通过java备份恢复mysql数据库的实现代码
  • mysql xtrabackup 备份恢复实现分享
  • MySQL中的binlog相关命令和恢复技巧
  • 教你自动恢复MySQL数据库的日志文件(binlog)
  • 自动恢复MySQL数据库的日志文件思路分享及解决方案
  • mysql的XA事务恢复过程详解
  • MySQL忘记密码恢复密码的实现方法
  • mysql 误删除ibdata1之后的恢复方法
  •  
    本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.169IT.COM)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • xp下的mysql数据库如何迁移到linux中的mysql
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • 解析mysql数据库还原错误:(mysql Error Code: 1005 errno 121)
  • mysql jdbc连接mysql数据库步骤及常见参数详解
  • mysql数据库中的information_schema和mysql可以删除吗?
  • mysql数据库介绍
  • mysql数据库备份命令分享(mysql压缩数据库备份)
  • mysql数据库下载安装教程和使用技巧
  • Python Mysql数据库操作 Perl操作Mysql数据库
  • 数据库迁移工具 DBConvert for MySQL & PostgreSQL
  • 快速修复损坏的MySQL数据库
  • 使用dreamhost空间实现MYSQL数据库备份方法
  • Oracle欲收购开源数据库MySQL未果
  • 请教mysql数据库连接问题
  • 有谁在redhat下安装过Mysql数据库?谢谢了
  • 网易的MySQL数据库分支 InnoSQL
  • 如何用java连接mysql数据库?
  • 更改Mysql数据库存储位置的具体步骤
  • mysql数据库访问权限问题
  • 请问用resin作服务器,如何与mysql数据库连接?
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号