学习mysql的binlog配置

1、基础知识

日志是把数据库的每一个变化都记载到一个专用的文件里,这种文件就叫做日志文件。mysql默认只开启错误日志,因为过多的日志将会影响系统的处理性能。

在mysql5.0以前版本支持文本格式和二进制格式的日志,但是在mysql5.0后版本就只支持二进制格式的日志。因为二进制日志在性能、信息处理等方面有更多的优点。

2、启用mysql二进制日志

mysql二进制日志由配置文件my.cnf的log-bin选项负责启用的。

mysql服务器默认会在数据根目录创建两个新文件:XXX-bin.000001和XXX-bin.index。若配置选项没有给出文件名,mysql将使用mysql-bin来命名这两个文件,其中.index文件包含一份完整的日志文件清单。如下:

cat /etc/my.cnf

ll /usr/local/mysql/data/

cat /usr/local/mysql/data/mysql-bin.index

mysql会把用户对所有数据库的内容和结构的修改情况记入XXX-bin.n文件,但是不会记录SELECT和没有实际更新的UPDATE语句。

当然我们也可以同过相关命令查询,mysql是否已经开启binlog日志。如下:

show variables like ‘log_%’;

3、binlog日志文件的生成

当mysql停止或重启时,服务器会把日志文件记入下一个日志文件,mysql会在重启时生成一个新的日志文件,文件序号依次递增。

如果日志文件超过max_binlog_size(在my.cnf文件中配置)系统变量配置的上限时,也会生成新的日志文件。

除此之外,如果在mysql命令中执行flush logs命令也会生成新的日志文件。

4、查看系统中的binlog日志

查看系统中的binlog日志,使用show master logs命令。如下:

show master logs;

5、查看binlog日志文件

mysql提供了mysqlbinlog命令来查看日志文件,在记录每条变更日志的时候,日志文件都会把当前时间给记录下来,以便进行数据库恢复。如下:

mysqlbinlog mysql-bin.000001| more

6、使用binlog日志进行数据库恢复

如果遇到灾难事件,应该用最近一次制作的完整备份恢复数据库,然后使用备份之后的binlog日志件把数据库恢复到最接近现在的可用状态。

使用binlog日志进行恢复时需要依次进行,即最早生成的日志文件要最先恢复。恢复数据的命令格式如下:

mysqlbinlog xxx-bin.000001|mysql -u root –p password dataname

有关使用binlog进行数据库的恢复,可以看这篇文章《烂泥:通过binlog恢复mysql数据库》。

7、binlog命令行参数详解

log-bin [=file_name] 此参数表示启用binlog日志功能,并可以定制路径名称,默认为mysql-bin。

binlog_format 此参数配置binlog的日志格式,默认为mixed。

max_binlog_size此参数配置binlog的日志最大值,最大和默认值是1GB。

max_binlog_cache_size此参数表示binlog使用最大内存的数。

binlog-do-db=db_name 此参数表示只记录指定数据库的二进制日志。

binlog-ignore-db=db_name此参数表示不记录指定的数据库的二进制日志。

expire_logs_days 此参数表示binlog日志保留的时间,默认单位是天。

my.cnf配置文件有关binlog配置如下:

cat /etc/my.cnf |grep -v ^#|grep -v ^$

8、删除binlog日志

8.1删除部分binlog日志

删除binlog部分日志,我们可以日志名称和日志生成的时间来进行删除。删除命令如下:

purge {master|binary} logs to ‘log_name’;

根据日志名称删除,只删除log_name之前的日志,log_name本身不会被删除。

通过上图我们可以看到,mysql-bin.000003之前的日志已经被全部删除。

purge {master|binary} logs before ‘date’;

根据日志生成的时间删除,只删除date之前的日志,date本身不会被删除。

8.2删除全部binlog日志

删除之前所有的binlog日志,并重新生成新的binlog,后缀从000001开始。使用命令:

reset master;

时间: 2024-11-02 00:49:28

学习mysql的binlog配置的相关文章

学习mysql数据库主从同步复制原理

MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQL Cluster,但因为MySQL Cluster配置比较复杂,所以使用者较少. MySQL的Replication是一个异步复制的过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),它是从一个Mysql instance(instance英文为实例)(我们称之为Master)复制到

mysql 利用binlog增量备份,还原实例

mysql 利用binlog增量备份,还原实例 张映 发表于 2010-09-29 分类目录: mysql 一,什么是增量备份 增量备份,就是将新增加的数据进行备份.假如你一个数据库,有10G的数据,每天会增加10M的数据,数据库每天都要备份一次,这么多数据是不是都要备份呢?还是只要备份增加的数据呢,很显然,我只要备份增加的数据.这样减少服务器的负担. 二,启用binlog vi my.cnf log-bin=/var/lib/MySQL/mysql-bin.log,如果是这样的话log-bin

jsp+tomcat+mysql&sevlet&javabean配置全过程

js|mysql|过程 在配置jsp开发环境的过程中会碰到不少问题,感谢网上的许多前辈的经验总结,作者cl41的JSP连接Mysql数据库攻略和作者Saulzy的MySQL学习笔记等文章对我来说简直是雪中送碳,为了帮助象我一样的初学者在此总结了不少作者的经验,非常感谢他们的无私奉献精神,也希望更多的人把这种精神发扬光大,呵呵,再次对所参考文章的作者表示最崇高的敬意!以下软件下载连接地址无法显示的话,请直接到官方网站下载即可! 软件下载Mysql下载版本:mysql-4.1.13-win32.zi

阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费

背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元.ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析 基于日志增量订阅&消费支持的业务: 数据库镜像 数据库实时备份 多级索引 (卖家和买家各自分库索引) se

MySQL的binlog日志

binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. 一般来说开启二进制日志大概会有1%的性能损耗(参见MySQL官方中文手册 5.1.24版).二进制有两个最重要的使用场景: 其一:MySQL Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达到master-slave数据一致

MySql绿色版配置及使用详解

原文:MySql绿色版配置及使用详解           最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySql所以在配置的时候出现了一些问题,该篇文章就主要针对MySql绿色版的配置及其使用进行讨论. 一.MySql概述        MySql数据库是有瑞典MySql AB公司开发,现在该公司被Oracle收购属于Oracle所有.同SQL Server类似,它也是基于关系型数据库的

CentOS 6.4系统MySQL主从复制基本配置实践

对于MySQL数据库一般用途的主从复制,可以实现数据的备份(如果希望在主节点失效后,能够使从节点自动接管,就需要更加复杂的配置,这里暂时先不考虑),如果主节点出现硬件故障,数据库服务器可以直接手动切换成备份节点(从节点),继续提供服务.基本的主从复制配置起来非常容易,这里我们做个简单的记录总结. 我们选择两台服务器来进行MySQL的主从复制实践,一台m1作为主节点,另一台nn作为从节点. 两台机器上都需要安装MySQL数据库,如果想要卸掉默认安装的,可以执行如下命令: 1 sudo rpm -e

MyBatis学习教程(三)-MyBatis配置优化_java

一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="." encoding="UTF-"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--

MYSQL多实例配置与使用教程

在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 mysqld_multi  1.修改my.cnf   如一个定义两个实例的参考配置:  代码如下 复制代码 [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin user = your_user password = your_password