美文网首页
mysql 日志管理

mysql 日志管理

作者: later02 | 来源:发表于2020-03-26 09:33 被阅读0次

    日志管理:

    1.错误日志:

    作用:记录mysql从启动以来,所有的状态,警告,错误。

    为我们定位数据库问题,提供帮助。

    配置方法:

    默认:开启状态,datadir 目录下,本机为 /data/3306/

    izm5ej125b6mhu0tdhdzy9z.err

    定制方法:

    vi  /etc/my.cnf 

    log_error = /tmp/mysql.log 

    重启生效

    1.3怎么看错误日志

    查看【ERROR】标记的错误

    2.binlog 二进制日志

    作用:

    主要进行数据库变化(DDL,DCL,DML)性质的日志

    数据恢复,主从复制中应用,记录的是逻辑日志,(sql语句)

    如何配置:

    默认:8.0版本以前没有开启。我们建议生产开启

    配置方法:

    vi /etc/my.cnf 

    server_id = 0~65535  #主机编号,主从设置,5.7以后开binlog要设置

    log_bin = /data/binlog/mysql-bin #日志位置点+ 日志名前缀

    sync_binlog =1  binlog刷盘策略,#双一中的一个一。每次书屋提交立即刷到磁盘

    binlog_format = row  #binlog记录的模式为row模式

    说明:一定要和数据盘分开

     例如:

    /dev/sdb ---->/data/3306

    /dev/sdc ----->/data/binlog  

    binlog记录内容详解

    引入:

    binlog是sql层的功能,记录的是变更sql语句,

    不记录查询语句。

    记录sql语句的种类:

    DDL:原封不动的记录当前的DDL( statement方式语句)

    DCL:原封不动的记录当前的DCL( statement方式语句)

    DML:只记录已经提交的事务DML

    DML三种记录方式:

    binlog_format(binlog的记录格式)参数影响

    1.statement(5.6默认) SBR(statement based replication),语句模式原封不动记录当前DML;

    2.ROW模式(5.7默认 推荐),RBR(row based replication) 记录数据行的变化,用户看不懂,需要分析工具。

    3.mixed(混合) MBR(mixed based replication) 模式:statement 和row模式的混合

    面试题:

    SBR与RBR对比

    statement:可读性高,日志量少,但是不够严谨

    row:可读性很低,日志量大,足够严谨。

    例如:遇到插入中执行了带有时间的函数。

    statement 时间会获取当前的日志,row记录了之前的具体时间。

    所以建议row模式。

    even(事件)是什么?

    介绍:

    二进制日志的最小记录单元

    对于DDL,DCL,一个语句就是一个event

    对于DML语句来讲:只记录已提交的事务。

    例如:以下的列子,就被分为了4个event

           start       stop (position标记号)

    begin;  120 - 340 

    dml1  340 - 460 

    dml2 460 - 550 

    commit; 550 - 760 

    event的组成 

    三部分构成:

    1.事件的开始标识

    2.事件内容

    3.事件的结束标识

    position:

    开始标识:at 194 

    结束标识:end_log_pos 254 

    位置号的作用:

    为了方便我们截取事件。

    binlog的查看

    查看是否开启:

    查看位置:

    文件查看:

    二进制日志内置查看命令:

    1)查看目前有几个日志文件

    mysql> show binary logs;

    +------------------+-----------+

    | Log_name        | File_size |

    +------------------+-----------+

    | mysql-bin.000001 |      154 |

    +------------------+-----------+

    1 row in set (0.00 sec)

    2)查看当前在用的日志文件

    mysql> show master status;

    3)查看二进制日志事件 

     show binlog events in 'mysql-bin.000001';

    +------------------+-----+----------------+-----------+-------------+---------------------------------------+

    | Log_name        | Pos | Event_type    | Server_id | End_log_pos | Info                                  |

    +------------------+-----+----------------+-----------+-------------+---------------------------------------+

    | mysql-bin.000001 |  4 | Format_desc    |        6 |        123 | Server ver: 5.7.26-log, Binlog ver: 4 |

    | mysql-bin.000001 | 123 | Previous_gtids |        6 |        154 |                                      |

    +------------------+-----+----------------+-----------+-------------+---------------------------------------+

    以上是正常的头格式:

    执行语句:

    mysql> create database oldguo charset utf8mb4;

    相关文章

      网友评论

          本文标题:mysql 日志管理

          本文链接:https://www.haomeiwen.com/subject/ujdxuhtx.html