mysql 中的日志详解

mysql 中的日志类型
  • 普通日志(general log)
    • 开启后会记录所有执行的 sql,开启后很容易导致磁盘爆满,一般只是用于临时使用的时候开启,使用完后关闭

  • 慢查询日志(slow query log)
    • sql 查询时间超过设置阈值时间,则记录为慢查询 sql,主要用于优化,性能排查等
      • 查看慢查询的阈值
        show global variables like ‘long_query_time’;
      • 设置慢查询时间
        set global long_query_time = 5;
      • 查看是否开启慢查询
        show variables like ‘slow_query_log’;
      • 开启慢查询
        set global slow_query_log=on;
      • 查询慢日志输出格式
        show variables like ‘log_output’;
      • 查看慢查询的相关配置
        show variables like ‘%slow%’;

  • 错误日志(errorlog)
    • 记录执行过程的错误信息,告警信息,mysql 启动,关闭过程信息,复制的一些 IO 信息,事件调度器运行事件产生的信息
      • 查看错误日志存储位置
        show variables like ‘log_error’;
      • 查看 log_warnings 的配置
        show variables like ‘log_warnings’;
        • log-error:定义错误日志的功能和错误日志的存储位置
        • log-warnings:定义是否将警告信息记录在错误日志,在 8.0 版本之后该参数被移除
          • 0:表示不记录警告信息
          • 1:表示警告信息一并记录到错误日志中
          • 大于1:表示"失败的连接"的信息和创建新连接时"拒接访问"类的错误信息也会被记录到错误日志中。
        • log_error_verbosity:系统变量,从 5.7.2 版本开始,主要首选该参数,而不是 log-warnings
          • 1:错误信息
          • 2:错误信息和告警信息
          • 3:错误信息,告警信息和通知信息
      • 错误日志如果不清理或删除,则会一直增长,v5.5.7 之前可以通过命令 mysqladmin flush-logs 命令删除,v5.5.7 版本之后可以通过 mv 备份进行删除

  • 二进制日志(binlog)
    • 记录对 mysql 数据库执行更改的所有操作,但不包括 select 和 show 这类的操作,主要的作用是复制,恢复,审计
    • binlog 的三种模式
      • statement:基于语句
        • 优点:日志记录量较小,节约磁盘及网络 I/O
        • 缺点:必须要记录上下文信息,保证在从服务器上执行结果和主服务器上相同对一些非确定性函数无法进行正确复制,如 UUID(),USER() 等可能造成 mysql 复制的主备服务器数据不一致
      • row:基于行
        • 优点:使 mysql 主从复制更加安全,对每一行数据的修改比基于段的复制高效,有利于数据恢复
        • 缺点:日志量较大
      • mixed:mysql 判断选择合适的方式基于语句或基于行记录日志

  • 重写日志(redo log)
    • redo log 是一种基于磁盘的数据结构,用来在 mysql 宕机情况下将不完整的事务执行数据纠正,redo 日志记录事务执行后的状态
    • 当事务开始后,redo log 就开始产生,并且随着事务的执行不断写入redo log file 中
    • redo log file 中记录某一页做什么修改的信息,我们都知道数据库的更新操作会在内存中先执行,最后刷入磁盘
    • redo log 就是为了恢复更新了内存但是由于宕机等原因没有刷入磁盘中的那部分数据

  • 回滚日志(undo log)
    • undo log 主要用来回滚到某一个版本,是一种逻辑日志
    • undo log 记录的是修改之前的数据,比如:当 delete 一条记录时,undolog 中会记录一条对应的 insert 记录,从而保证能恢复到数据修改之前
    • 在执行事务回滚的时候,就可以通过 undo log 中的记录内容并以此进行回滚

  • 中继日志(relay log)
    • relay-log 中继日志是连接 master 和 slave 的核心
    • relay-log 的结构和 binlog 非常相似,只不过他多了一个 master.info 和 relay-log.info 的文件
    • master.info 记录了上一次读取到 master 同步过来的 binlog 的位置,以及连接 master 和启动复制必须的所有信息
    • relay-log.info:记录了文件复制的进度,下一个事件从什么位置开始,由 sql 线程负责更新
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL 的配置文件是一个重要的组成部分,它决定了 MySQL 服务器的行为和功能。下面是 MySQL 配置文件的一些重要参数的详解: 1. `datadir`:指定 MySQL 数据文件的存储路径。默认情况下,数据文件存储在 `/var/lib/mysql` 目录下。 2. `port`:指定 MySQL 服务器监听的端口号。默认端口号是 3306。 3. `bind-address`:指定 MySQL 服务器绑定的 IP 地址。默认情况下,它绑定在所有可用的 IP 地址上。 4. `max_connections`:指定允许的最大并发连接数。这个值取决于你的硬件和应用程序的需求。 5. `character_set_server`:指定服务器默认字符集。见的字符集有 utf8、utf8mb4 等。 6. `collation_server`:指定服务器默认的排序规则。它与字符集相关,用于确定字符串比较和排序的规则。 7. `log_error`:指定错误日志文件的路径。MySQL 会将错误信息记录在这个文件,以便进行故障排查。 8. `slow_query_log`:启用慢查询日志功能。当查询执行时间超过设定阈值时,将会被记录在慢查询日志。 9. `innodb_buffer_pool_size`:指定 InnoDB 存储引擎使用的缓冲池大小。这个参数决定了 InnoDB 存储引擎能够缓存的数据量。 10. `innodb_log_file_size`:指定 InnoDB 存储引擎的日志文件大小。这个参数影响到事务处理的性能和恢复过程的速度。 这些只是 MySQL 配置文件的一部分参数,还有很多其他参数可以根据需求进行配置。配置文件的路径通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`,具体路径可能因操作系统而异。在修改配置文件后,需要重启 MySQL 服务器使修改生效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tytler

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值