zoukankan      html  css  js  c++  java
  • 数据库学习----MySQL 日志

    MySQL 日志

    记录MySQL学习过程中的所有日志,可能不一定所有的都会用到

    MySQL 常用的日志类型

    日志名称 作用
    错误日志(error_log) 记录mysql在启动、运行或停止时出现的问题
    常规日志(general_log) 记录所有发向MySQL的请求
    慢查日志(slow_query_log) 记录符合条件的查询
    二进制日志(binary_log) 记录全部有效的数据修改日志
    中继日志(relay_log) 用于主从复制,临时存储从主库的二进制日志

    错误日志

    • 分析排除MySQL 运行错误
    • 记录未经授权的访问

    配置错误日志

    • log_error=$mysql/sql_log/mysql-error.log(MySQL 的错误日志存储目录)
    • log_error_verbosity=[1,2,3] (级别越高,记录的日志越多)
    verbosity 作用
    1 Error messages
    2 Error and warning messages
    3 Error,warning,and note messages
    • log_error_services=[日志服务组件;日志服务组件] (MySQL 8.0 中才有)
    组件名称 作用
    log_filter_internal 默认的日志过滤组件,依赖log_error_verbosity
    log_sink_internal 默认的日志输出组件,依赖log_error
    log_sink_json 将错误日志输出到json文件
    log_sink_syseventlog 将错误日志输出到系统日志文件

    查看日志目录存放目录

    select @@log_error;

    查看log_error_verbosity

    select @@log_error_verbosity;

    查看log_error_services;

    select @@log_error_services;

    查看日志使用的时区

    select @@log_timestamps;

    设置系统时间作为时间撮

    set persist log_timestamps='SYSTEM';

    配置常规日志

    分析客户端发送到MySQL 的实际请求(短时间内会有大量的日志被记录)

    这个日志会从建立连接开始知道连接断开的所有操作日志。

    密码明文是不会记录下来的

    • general_log=[ON|OFF]打开或关闭常规日志(不是特殊情况不要打开)
    • general_log_file=$mysql/sql_log/general.log (常规日志文件的位置)
    • log_output=[FILE|TABLE|NONE] 保存在表中或文件中 mysql 库中的 general_log表

    查看general_log

    select @@general_log; 0 未启动 1启动

    查看general_log 文件位置

    select @@general_log_file;

    设置general_log 文件目录

    set persist general_log_file='/home/mysql/sql_log/general.log'

    启动general_log

    set global general_log=on;

    设置log_output的位置

    set global general_log='table’;

    关闭log_output

    set global general_log=off;

    配置慢查询日志

    将执行成功并符合条件的查询记录到日志中

    找到需要优化的SQL

    • slow_query_log=[ON|OFF] (配置是否打开慢查询日志)
    • slow_query_log_file=$mysql/sql_log/slowlog.log(慢查询日志文件位置)
    • long_query_time=xx秒(执行成功符合的条件----查询时间)记录所有sql可以将这个参数设置为0
    • log_queries_not_using_indexes=[ON|OFF] (记录所有没有使用索引的SQL)
    • log_slow_admin_statements=[ON|OFF] (记录所有使用admin 操作的日志)
    • log_slow_slave_statements=[ON|OFF] (记录二进制日志,主从数据库,很少使用,基本不打开了)

    查看慢查询日志设置的慢查询时间

    show variables like 'long_query_time';

    修改慢查询日志的慢查询时间

    set global long_query_time=0.01;

    配置二进制日志

    记录所有对数据库中数据的修改

    基于时间点的备份和恢复

    主从复制

    • log-bin [=base_name]

    • binlog_format=[Row|STATEMENT|MIXED] (二进制日志格式)

      • Row 每修改一行就记录一条记录
      • STATEMENT 5.7之前 默认 只记录执行的SQL 语句(可避免主从不一致的问题)
      • MIXED MySQL 数据Row 与 STATEMENT 写得混合
    • binlog_row_image=[FULL|MINIMAL|NOBLOB]

      • FULL 全部记录
      • MINIMAL 只记录被修改的值
      • NOBLOB 值记录除了BLOB 外的值的修改
    • binlog_rows_query_log_events=[ON|OFF] (在ROW格式下记录SQL)

    • log_slave_updates=[ON|OFF] 记录从主数据库同步过来的二进制数据

    • sync_binlog=[1|0] 控制MySQL 如何刷新日志到磁盘

      • 1 :每写一次就刷一次
      • 0 :由操作系统决定
    • expire_logs_days=days(每天清理一次二进制日志)

    • PURGE BINARY LOGS TO ‘mysql-bin.010’ (把mysql-bin.001~mysql-bin.009 全部删除掉)

    • PURGE BINARY LOGS BEFORE ‘2010-10-22 10:12:33’ (小于这个时间点的二进制日志全部删除掉)

    查看是否打开二进制日志

    show variables like 'log_bin';

    查看配置文件目录

    show variables like 'log_bin_basename';

    查看binlog_row_image

    show variables like 'binlog_row_image';

    查看二进制日志格式

    show variables like 'binlog_format';

    读取二进制日志(转换为可读的内容)

    mysqlbinlog --no-defaults -vv --base64-output=DECODE-ROWS 二进制日志名

    修改二进制日志格式

    set global binlog_row_image=minimal;

    打开ROW 格式下记录SQL

    set binlog_rows_query_log_events=on;

    配置中继日志

    只有在主从复制的数据库中才有

    临时记录从主服务器同步的二进制日志

    • relay_log=filename (用于文件位置和文件前缀,不填的话则会存在数据目录中,会用主机名作为前缀)
    • relay_log_purge=[ON|OFF] (对relay_log进行自动清除)

    PS:flush logs 可以刷新日志的配置

  • 相关阅读:
    【车】平安车险费用
    【光环国际】掌握项目经理12个工作流程
    【光环国际】500强公司7个项目管理工具
    数据仓库和商业智能演进五个阶段
    【技术与商业案例解读笔记】095:Google大数据三驾马车笔记
    15道最常考的SpringBoot面试题,你都遇到过哪些?
    用户画像4:标签数据开发
    plsql 传参
    shell专题(二):Shell解析器
    shell专题(三):Shell脚本入门
  • 原文地址:https://www.cnblogs.com/bananafish/p/14775344.html
Copyright © 2011-2022 走看看