• 烂泥:学习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

    clip_image001[4]

    clip_image002[4]

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

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

    show variables like 'log_%';

    clip_image003[4]

    3、binlog日志文件的生成

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

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

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

    clip_image004[4]

    4、查看系统中的binlog日志

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

    show master logs;

    clip_image005[4]

    5、查看binlog日志文件

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

    mysqlbinlog mysql-bin.000001| more

    clip_image006[4]

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

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

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

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

    有关使用binlog进行数据库的恢复,我会以后的文章进行详细介绍。

    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 ^$

    clip_image007[4]

    8、删除binlog日志

    8.1删除部分binlog日志

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

    purge {master|binary} logs to 'log_name';

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

    clip_image008[4]

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

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

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

    clip_image009[4]

    8.2删除全部binlog日志

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

    reset master;

    clip_image010

  • 相关阅读:
    js面向对象的程序设计 --- 上篇(理解对象)
    js基础 之 引用类型
    js基础之--变量 作用域和内存问题
    js基础心得
    一些转载的知识点
    linux打印指定的行的内容
    R画柱形图和箱线图
    Meerkat软件
    bam文件格式说明
    STAR软件的学习
  • 原文地址:https://www.cnblogs.com/ilanni/p/4080504.html
Copyright © 2020-2023  润新知