• MySQL日志


    MySQL日志

    错误日志

    mysqld启动和关闭过程中输出的事件信息、运行中产生的错误信息、event scheduler运行一个event时产生的日志信息、在主从复制架构中的从服务器上启动从服务器线程时产生的信息

    错误日志相关配置:

    mysql> show global variables like 'log_error';
    +---------------+--------+
    | Variable_name | Value  |
    +---------------+--------+
    | log_error     | stderr |
    +---------------+--------+
    1 row in set (0.00 sec)
    

    错误日志文件路径:

    [mysqld]
    log_error=/data/logs/mysql.log
    

    是否记录警告信息至错误日志文件:

    [mysqld]
    log_warnings=1|0 默认值1
    

    通用日志

    记录对数据库的通用操作,包括错误的SQL语句:存储在文件file、表table,默认值文件

    通用日志相关配置:

    show global variables like 'general%';
    
    general_log=ON|OFF 默认值OFF
    general_log_file=HOSTNAME.log
    
    show global variables like 'log_output';
    
    log_output=TABLE|FILE|NONE 记录方式,默认文件file
    

    开启通用日志,表形式

    [mysqld]
    log_output=table
    general_log
    

    慢查询日志

    记录执行查询时长超出指定时长的操作

    慢查询日志相关配置:

    slow_query_log=ON|OFF 开启或关闭慢查询
    long_query_time=number 慢查询的阀值,单位秒
    slow_query_log_file=HOSTNAME-slow.log 慢查询日志文件
    log_slow_filter = admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
    上述查询类型且查询时长超过long_query_time,则记录日志
    
    
    log_queries_not_using_indexes=ON 不使用索引或使用全索引扫描,不论是否达到慢查询阀值的语句是否记录日志,默认OFF,即不记录
    log_slow_rate_limit = 1 多少次查询才记录,mariadb特有
    log_slow_verbosity= Query_plan,explain 记录内容
    log_slow_queries = OFF 同slow_query_log 新版已废弃
    

    开启慢查询日志

    [mysqld]
    slow_query_log
    long_query_time=3 超过3秒记录
    

    查询慢在哪里的原因-profiling

    show variables like 'profiling'; 查询是否开启
    set profiling=on;
    show profiles; 查看有多少个慢查询记录在内
    show profile for query 2; 查看Query_ID=2的查询过程
    

    二进制日志

    记录导致数据改变或潜在导致数据改变的SQL语句

    记录已提交的日志

    不依赖于存储引擎类型

    功能:通过“重放”日志文件中的事件来生成数据副本

    注意:建议二进制日志和数据文件分开存放

    二进制日志记录格式

    • 基于“语句”记录:statement,记录语句
    • 基于“行”记录:row,记录数据,日志量较大
    • 混合模式:mixed, 让系统自行判定该基于哪种方式进行

    查看格式当前: show variables like 'binlog_format';

    二进制日志文件的构造

    两类文件:

    • 日志文件: mysql|mariadb-bin.文件名后缀(mysql-bin.000001),二进制格式

    • 索引文件:mysql|mariadb-bin.index,文本格式。

    二进制文件相关配置

    sql_log_bin=ON|OFF:是否记录二进制日志,默认ON
    log_bin=/PATH/BIN_LOG_FILE:指定文件位置;默认OFF,表示不启用二进制日志功能
    上述两项都开启才可以
    
    binlog_format=STATEMENT|ROW|MIXED:二进制日志记录的格式
    max_binlog_size=1073741824:单个二进制日志文件的最大体积,到达最大值会自动滚动,默认为1G
    说明:文件达到上限时的大小未必为指定的精确值
    
    sync_binlog=1|0:设定是否启动二进制日志即时同步磁盘功能,默认0,由操作系统负责同步日志到磁盘
    expire_logs_days=N:二进制日志可以自动删除的天数。 默认为0,即不自动删除
    
    开启,建议二进制日志和数据文件分开存放
    [mysqld]
    log-bin=/data/logbin/mysql-bin
    

    查看mariadb自行管理使用中的二进制日志文件列表,及大小

    show  {BINARY | MASTER}  logs 
    

    查看使用中的二进制日志文件

    SHOW MASTER STATUS
    

    查看二进制文件中的指定内容

    SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
    
    show binlog events in 'mysql-bin.000001';
    show binlog events in 'mysql-bin.000001' from 6516;
    show binlog events in 'mysql-bin.000001' from 6516 limit 2,3;
    

    二进制日志的客户端命令工具

    二进制日志的客户端命令工具:mysqlbinlog

    命令格式:mysqlbinlog [OPTIONS] log_file

    ​ --start-position=# 指定开始位置

    ​ --stop-position=#

    ​ --start-datetime=

    ​ --stop-datetime=

    ​ 时间格式:YYYY-MM-DD hh:mm:ss

    ​ --base64-output[=name]

    ​ -v -vvv

    示例:

    mysqlbinlog --start-position=6787 --stop-position=7527 /var/lib/mysql/mariadb-bin.000003 -v

    mysqlbinlog --start-datetime="2018-01-30 20:30:10" --stopdatetime="2018-01-30 20:35:22" mariadb-bin.000003 -vvv

    mysqlbinlog /var/lib/mysql/mariadb-bin.000003 -v > test.sql

    每天进步一点点
  • 相关阅读:
    Java实现 LeetCode 679 24 点游戏(递归)
    Java实现 LeetCode 678 有效的括号字符串(暴力+思路转换)
    Java实现 LeetCode 678 有效的括号字符串(暴力+思路转换)
    Java实现 LeetCode 678 有效的括号字符串(暴力+思路转换)
    Java实现 LeetCode 677 键值映射(字典树)
    Java实现 LeetCode 677 键值映射(字典树)
    Java实现 LeetCode 677 键值映射(字典树)
    Java实现 LeetCode 676 实现一个魔法字典(暴力)
    PHP empty() 函数
    PHP floatval()、doubleval () 函数
  • 原文地址:https://www.cnblogs.com/Otiger/p/14545032.html
Copyright © 2020-2023  润新知