二进制日志的文件的作用

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 �Cp

(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 �Cp

这样,系统会自动执行二进制日志中编号最低的语句到编号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 �Cproot

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

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

经常delete 、update错了!所有给自己个文档!当然我也希望你永远的用不上这个文档 ! 周末愉快!

 (排版有的乱哈!多多包涵!)

mysql 二进制日志 解析c++_mysql二进制日志文件恢复数据库相关推荐

  1. Sql Server实用操作-无数据库日志文件恢复数据库两种方法

    数据库日志文件的误删或别的原因引起数据库日志的损坏 方法一 1.新建一个同名的数据库 2.再停掉sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启s ...

  2. MySQL利用.ibd文件恢复数据库

    MySQL利用.ibd文件恢复数据库 1.需要在新的数据库中新建一个与原来表格表结构相同的表,字段名称相同: 2.清空新建表的表空间 alter table <表名> discard ta ...

  3. mysql 二进制日志详解_Mysql二进制日志详解

    引言 注:图片取自网络 提一下比较重要的几个: 重做日志(Redo Log):重做日志是实现mysql事务的持久性的原理之一,当新增数据时,Redo Log会备份新数据,在事务提交前,只要持久化Red ...

  4. mysql二进制日志内容说明_MySQL二进制日志相关问题详细说明

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  5. mysql配置日志老化配置_mysql中日志的配置与分析

    默认情况下,如果日志没有配置,则只记录错误日志,记录到syslog,配置文件 /etc/mysql/conf.d/mysqld_safe_syslog.cnf (ubuntu下) [mysqld_sa ...

  6. mysql配置日志老化配置_mysql配置-日志大小限制和自动删除

    线上的项目磁盘消耗问题, 发现和MySQL日志有关系. 需要处理的问题 如何限制大小 不让日志无限膨胀? 配置日志不留? 删除的方式和直接删除会对服务有什么影响? 解决方式 限制大小, 保留最近一段时 ...

  7. mysql 数据库日志管理工具_mysql mysqlbinlog日志管理工具使用教程

    一.概述 由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具. mysqlbinlog的语法如下: mysqlbinlog ...

  8. mysql 错误日志 占用硬盘_MySQL慢日志占满磁盘空间导致业务主库宕机解决

    在MySQL的日常维护中,我们总会遇到这样或那样的问题,对于那些经常发生且有处理经验的事故,不论是新手还是老司机都能在故障规定的容错时间内解决.而对于那些不常见.比较棘手的问题,新手上路可能就显得举足 ...

  9. mysql的报错日志哪里看_mysql错误日志

    ### 错误日志是非常有用的东西,在上一篇 mysql字符集 中,因为看了网上很多博客,修改字符集的时候,在服务端` [mysqld]`下添加的变量内容为(博客里写的是这个变量,有很多博客都这样写,可 ...

最新文章

  1. assign深拷贝_经典前端面试题: Object.assign 是浅拷贝还是深拷贝?实现深拷贝的方法有哪些?...
  2. UNP Chapter 9 - 基本名字与地址转换
  3. C++ Primer 5th笔记(chap 16 模板和泛型编程)std::move
  4. python用xlrd怎么清洗数据_用Python进行数据清洗!
  5. Django 3.2.5博客开发教程:一些常用的模板使用方法
  6. SQL Server 2008空间数据应用系列十一:Bing Maps中呈现GeoRSS订阅的空间数据
  7. 7/7 SELECT语句:创建计算字段
  8. JavaDoc命令使用说明
  9. Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
  10. win7下安装linux(CentOS)过程中遇到的问题总结
  11. Where与Having的区别
  12. jQuery Easy UI ProgressBar(进度条)组件
  13. 操作系统锁的实现方法有哪几种_java 偏向锁、轻量级锁及重量级锁synchronized原理...
  14. window 2008 搭建的DHCP服务器
  15. 使用Duilib做的程序封装成DLL的显示加载与卸载问题
  16. Android 中东阿拉伯语适配,看这一篇够了
  17. ioncube linux,linux 下ionCube安装
  18. 一个C/C++协程库的思考与实现之协程栈的动态按需增长
  19. swiper的基本使用
  20. 华为机试HJ102:字符统计

热门文章

  1. 【每日一算法】种花问题
  2. Celery 应用:Application
  3. 如何让自己在云服务器上部署的项目一直运行
  4. SSHFD:IBM提出的单阶段人体跌倒检测网络
  5. CV领域最经典的Paper是什么来头?
  6. 溢出漏洞利用小结(基础)
  7. ASP调用存储过程返回了一个参数和一个记录集时出现ADODB.Recordset 错误 '800a0e78'...
  8. Spark集群搭建【Spark+Hadoop+Scala+Zookeeper】
  9. 11g新特性:X$DBGALERTEXT一个很酷的内部视图
  10. 安装QT的时候出现PATH_MAX错误