文档编号
文档负责人
hawkliu
文档名称
Mysql binlog浅析
           
Mysql binlog浅析
深圳市腾讯计算机系统有限公司

 
目  录    1
文档历史    3
第1章    概述    4
1.1    前言    4
1.2    基础知识    4
1.3    内容纲要    5
第2章    查看日志    6
2.1    功能简介    6
2.2    用法简介    6
2.3    选项简介    6
2.4    注意事项    7
2.5    输出格式    8
第3章    备份原理    11
3.1    备份简介    11
3.2    实现概述    11
3.3    行级备份    11
3.4    备份过程    11
3.5    中继日志    13
3.6    自定义备份    14
3.7    注意事项    14
第4章    格式分析    15
4.1    功能简介    15
4.2    文件格式    15
代码混淆技术原理4.3    事件内容    15
第5章    附录    18
5.1    Mysql源码路径    18
文档历史
修订日期
修订内容
修订版本
修订人
2008-3-5
创建
1.00
hawkliu
第1章 概述
1.1 前言
日志是把数据库的每一个变化都记载到一个专用的文件里,这种文件就叫做日志文件。不到jdk安装路径Mysql默认只打开出错日志,因为过多的日志将会影响系统的处理性能。
5.0前支持文本格式和二进制格式,5.0后只支持二进制格式,因为二进制日志在性能、信息处理方面有更多的优点
下边将对mysql的二进制日志机制进行分析,希望通过这篇文档,能够让初学者对二进制日志有一个初步的了解。
1.2 基础知识
二进制日志的启用
    二进制日志由配置文件的log-bin选项负责启用,Mysql服务器将在数据根目录创建两个新文件XXX-bin.001xxx-bin.index,若配置选项没有给出文件名,Mysql将使用主机名称命名这两个文件,其中.index文件包含一份全体日志文件的清单。
    Mysql会把用户对所有数据库的内容和结构的修改情况记入XXX-bin.n文件,而不会记录SELECT和没有实际更新的UPDATE语句。
日志文件的扩展
    当停止或重启时,服务器会把日志文件记入下一个日志文件,Mysql会在重启时生成一个新的日志文件,文件序号递增,此外,如果日志文件超过max_binlog_size系统变量配置的上限时,也会生成新的日志文件。
日志文件的查看
    Mysqlaccess下载 免费中文版提供了mysqlbinlog命令来查看日志文件,如mysqlbinlog xxx-bin.001 | more。在记录每条变更日志的时候,日志文件都会把当前时间给记录下来,以便进行数据库恢复。
日志文件的停用
    可以使用SET SQL_LOG_BIN=0命令停止使用日志文件,然后可以通过SET SQL_LOG_BIN=1命令来启用。
使用日志进行数据库恢复
    如果遇到灾难事件,应该用最近一次制作的完整备份恢复数据库,然后使用备份之后的日志文件把数据库恢复到最接近现在的可用状态。
    使用日志进行恢复时需要依次进行,即最早生成的日志文件要最先恢复:
mysql语句顺序        mysqlbinlog xxx-bin.00001 | mysql –u root –p
        mysqlbinlog xxx-bin.00002 | mysql –u root –p
1.3 内容纲要
本文档分为4个部分:
1、如何查看二进制日志;
    2、二进制日志的备份原理;
    3、二进制日志的格式分析;
    4、二进制日志的深入应用。
第2章 查看日志
2.1 功能简介
mysqlbinlog可以将mysql服务器生成的二进制日志文件转换成可读的文本格式。此外,还可以使用该工具分析备机上的relay日志(可以理解为从服务器下载的二进制日志子集,其格式与主机的日志文件相同)。
由于文档参考了mysql5.0版本,若使用其他版本的工具,部分内容可能略有差异,需在实际操作过程中进行区分。
2.2 用法简介
mysqlbinlog的调用方式如下:mysqlbinlog [options] log_file ...,例如,要显示名字为binlog.000003的日志文件,按如下方式调用即可:mysqlbinlog binlog.000003。其输出信息包括了该日志文件中所有事件信息。
asp三端引擎源码
json添加数据所谓的事件,其实就是对数据库的一次操作记录,其中包括mysql服务器执行的语句、语句的执行时间点、发起执行的客户线程ID、语句执行花费的时间开销等信息。
mysqlbinlog的输出是可重复执行的,可以直接作为mysql程序的输入,若服务器崩溃后,可以利用mysqlbinlog的这个功能对二进制日志进行恢复,如mysqlbinlog binlog.000001 | mysql。此外,也可以将mysqlbinlog的输出重定向到一个文件中,删除不需要的SQL后再交给mysql去执行。需要注意的是,在恢复过程中,不要将多个日志文件同时交给不同的mysql客户端执行,因为恢复时需要保持二进制日志中的SQL语句的执行顺序。下边是一种
可选的方式:mysqlbinlog binlog.000001 binlog.000002 | mysql,或者将多个二进制文件拷贝到单个文件再执行。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。