美文网首页
30日志管理

30日志管理

作者: Jachin111 | 来源:发表于2020-11-23 23:27 被阅读0次

    错误日志 排查MySQL运行过程的故障
    默认配置 默认开启 datadir/hostname.err
    查看方法 [ERROR]
    人为定制位置 log_error=/tmp/mysql3306.log 重启生效
    查找位置 select @@log_error;

    二进制日志(binlog)
    主从要依赖二进制日志,数据恢复时需要依赖于二进制日志
    默认没有开启,配置
    server_id=6
    log_bin=/data/binlog/mysql-bin
    ​    /data/binlog 提前定制好的目录,而且要有mysql.mysql的权限
    ​    mysql-bin 二进制日志文件名的前缀

    binlog_format=row 5.7版本默认配置是row,可以省略

    创建目录和授权
    mkdir -p /data/binlog/
    chown -R mysql.mysql /data
    /etc/init.d/mysqld restart

    二进制日志记录 记录的数据库所有变更类的操作日志(DDL,DCL,DML)
    DDL和DCL 以语句的方式原模原样的记录
    DML 记录的已提交的事务,DML记录格式(statement,row,mixed),通过binlog_format=row参数控制
    ​    statement SSR,语句模式记录日志,做什么命令记录什么命令
    ​    row RBR,行模式,数据行的变化
    ​    mixed MBR,混合模式

    SBR和RBR的区别
    SBR 可读性强,对于范围操作日质量少,但是可能会出现不准确的情况
    RBR 可读性较弱,对于范围操作日志大,不会出现记录错位,高可用环境中的新特性要依赖于FBR

    二进制日志记录单元
    event事件 二进制日志的最小单元
    ​    对于DDL等语句是每一个语句就是一个事件
    ​    一个事务包含多个语句,多个事件

    event事件的开始和结束 方便我们从日志中截取我们想要的日志事件
    二进制日志管理
    查看二进制日志位置 SHOW variables like '%log_bin%';

    查看所有已存在的二进制日志
    SHOW binary logs;
    flush logs;

    查看正在使用的二进制日志 SHOW master status;

    查看二进制日志事件
    CREATE DATABASE binlog charset utf8mb4;
    use binlog;
    CREATE TABLE t1(id int);
    INSERT INTO t1 values(1);
    SHOW master status;
    SHOW binlog events in 'mysql-bin.000004';
    SHOW binlog events in 'mysql-bin.000004' limit 5;

    查看二进制日志内容
    mysqlbinlog mysql-bin.000004
    mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000004
    mysqlbinlog -d haoge mysql-bin.000004

    截取二进制日志
    mysqlbinlog --start-position=219 --stop-position=335 mysql-bin.000004 >/tmp/a.sql

    通过binlog恢复数据
    模拟数据
    CREATE DATABASE haoge charset utf8mb4;
    CREATE TABLE t1(id int);
    INSERT INTO t1 values(1);
    commit;

    模拟故障
    DROP DATABASE haoge;

    分析和截取binlog
    SHOW master status; 确认使用的是哪一个日志
    SHOW binlog events in 'mysql-bin.000004'; 查看事件
    mysqlbinlog --start-position=823 --stop-position=1420 mysql-bin.000004 >/tmp/bin.sql

    恢复binlog
    set mysql_log_bin=0; 临时关闭恢复时产生的新日志
    source /tmp/bin.sql
    set sql_log_bin=1;

    binlog的gtid记录模式管理
    GTID 对于binlog中的每一个事务,都会产生一个GTID号码
    ​    DDL,DCL一个event就是一个事务,就会有一个GTID号
    ​    DML语句来讲,begin和commit是一个事务,就是一个GTID号

    GTID的组成
    severi_uuid:TID
    cat auto.cnf

    TID是一个自增长的数据,从1开始
    GTID的幂等性 如果拿有GTID的日志去恢复时,检查当前系统中是否有相同的GTID号,有相同的就自动跳过,会影响到binlog恢复和主从复制

    GTID的开启和配置
    vim /etc/my.cnf
    gtid-mode=on
    enforce-gtid-consistency=true

    查看GTID信息
    CREATE DATABASE gtid charset utf8mb4;
    SHOW master status;
    USE gtid;
    CREATE TABLE t1(id int);
    SHOW master status;
    INSERT INTO t1 values(1);
    commit;

    SHOW master status;
    SHOW binlog events in 'mysql-bin.000005';
    DROP DATABASE gtid;

    基于GTID,binlog恢复
    截取日志
    cd /data/binlog/
    mysqlbinlog --skip-gtids --include-gtids='d60b549f-9e10-11e9-ab04-000c294a1b3b:1-3' mysql-bin.000005 >/tmp/gtid.sql
    ​    --skip-gtids 在导出时,忽略原有的gtid信息,恢复时生成最新的gtid信息

    恢复
    set sql_log_bin=0;
    source /tmp/gtid.sql
    set sql_log_bin=1;

    GTID相关的参数
    --skip-gtids
    --include-gtids
    --exclude-gtids

    慢日志(slow-log)
    记录运行较慢的语句,优化过程中常用的工具日志

    配置
    vim /etc/my.cnf
    slow_query_log=1 开关
    slow_query_log_file=/data/mysql/slow.log 文件位置及名字
    long_query_time=0.1 设定慢查询时间
    log_queries_not_using_indexes 没走索引的语句也记录
    systemctl restart mysqld

    模拟慢查询
    分析慢日志
    mysqldumpslow -s -c -t 10 /data/mysql/slow.log

    第三方工具
    toolkit工具包中的命令
    pt-query-diagest /data/mysql/slow.log
    Anemometer基于pt-query-digest将MySQL慢查询可视化

    二进制日志清理
    自动
    expire_logs_days=15
    设置的依据 至少1轮全备周期长度的过期时间

    手动
    help purge
    PURGE BINARY LOGS TO 'mysql-bin.000032';
    PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';
    reset master;

    日志如何滚动
    flush logs;

    数据库重启
    max_binlog_size=1073741824

    slow
    show variables like 'slow_query_log%';
    show variables like 'long%';
    show variables like '%using_indexes';

    相关文章

      网友评论

          本文标题:30日志管理

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