MySQL--日志管理

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

一、日志简介

MySQL日志主要分为4类,使用这些日志文件,可以查看MySQL内部发生的事情。这4类日志分别是:

  • 错误日志:记录 MySOL服务的启动、运行或停止MySQL服务时出现的问题
  • 查询日志:记录建立的客户端连接和执行的语句。
  • 二进制日志:记录所有更改数据的语句,可以用于数据复制
  • 慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询

默认情况下,所有日志创建于 MySOL数据目录中。通过刷新日志,可以强制 MySQL 关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志)。当执行一个FLUSH LOGS语句或执行 MySOLadmin fush-logsMySOLadmin refresh 时,将刷新日志。

如果正使用MySQL复制功能,在复制服务器上可以维护更多日志文件,这种日志称为接替日志

启动日志功能会降低 MySOL数据库的性能。例如,在查询非常频繁的MySOL数据库系统中如果开启了通用查询日志和慢查询日志,MySQL数据库会花费很多时间记录日志。同时,日志会占用大量的磁盘空间。

二、二进制日志

二进制用于记录MySQL数据库的变化。包含所有更新了数据或已经潜在更新数据的语句。语句以"事件"的形式保存,描述数据更改。还包含关于每个更新数据库的语句的执行时间信息。使用二进制日志的主要目的是最大可能的恢复数据库,因为二进制日志包含备份后进行的所有更新;

1、启动和设置二进制文件

默认情况下,二进制日志是开启的,可以通过修改MySQL的配置文件来启动和设置二进制日志;

my.ini中[MySQLd]组下面有关于二进制日志的设置;

log-bin [=path/ [filename]]

在my.ini配置文件中的[MySQLd]组下,添加以下几个参数与参数值:

 [mysqld]
 log_bin                     # 定义开启二进制日志
 expire_logs_days = 10       # 定义MySQL清除过期日志的时间
 max_binlog_size = 100M      # 定义了单个文件的大小限制,默认为1GB

添加完毕后,关闭并重新启动MySQL服务进程,即可打开二进制日志,然后通过show variables语句来查询日志设置:

 mysql> show variables like 'log_%';

可以在自己机器上的 MySOL数据文件夹下面看到新生成的文件后缀为.000001.index的两个文件,文件名称为默认主机名称

数据库文件最好不要与日志文件放在同一个磁盘上,这样当数据库文件所在的磁盘发生故障时,可以使用日志文件恢复数据

2、查看二进制日志

show binary logs 语句可以查看当前的二进制日志文件个数及其文件名。MySQL 二进制日志并不能直接查看,如果要查看日志内容,可以通过MySOLbinlog命令查看。

 show binary logs;
 c:\> mysqlbinary d:/mysql/log/binlog.00000.1

3、删除二进制日志

3.1、reset master语句删除所有二进制文件

 reset master;

执行完该语句后,所有二进制日志将被删除,MySQL会重新创建二进制日志,新的日志文件扩展名将重新从000001开始编号

3.2、purge master logs删除指定日志文件

 purge {master | binary} logs to 'log_name'
 purge {master | binary} logs before 'date'

第1种方法指定文件名,执行该命令将删除文件名编号比指定文件名编号小的所有日志文件。 第2种方法指定日期,执行该命令将删除指定日期以前的所有日志文件。

4、使用二进制日志恢复数据库

要想从二进制日志恢复数据,需要知道当前二进制日志文件的路径和文件名,一般可以从配置文件(my.cnf或者my.ini,文件名取决于MySQL服务器的操作系统)中找到路径,恢复语法如下:

 mysqlbinlog [option] filename |mysql -uuser -ppass

比较重要的两对option参数是--start-date、--stop-date--start-position、--stop-position

分别指定的是起始时间和结束时间点、开始位置和结束位置

 # 使用MySQLbinlog恢复MySQL数据库到2024年1月1日00:00:00时的状态
 mysqlbinlog --stop-date="2024-01-01 00:00:00" D:\mysql\log\binlog\xdfsdfdsfse-bin.000003 | mysql -uuser -ppass

5、暂时停止二进制日志功能

通过SETSOL LOG BIN语句可以使用MySOL暂停或者启动二进制日志。

set sql_log_bin = {0|1}

三、错误日志

1、启动和设置错误日志

在默认情况下,错误日志会记录到数据库的数据目录下。如果没有在配置文件中指定文件名,则文件名默认为hostname.err。例如,MySQL所在的服务器主机名为MySQL-db,记录错误信息的文件名为MySQL-db.err。如果执行了FLUSH LOGS,错误日志文件会重新加载。 错误日志的启动和停止以及指定日志文件名都可以通过修改 my.ini(或者my.cnf)来配置。错误日志的配置项是 log-error。在[MySQLd]下配置 log-error,则启动错误日志。如果需要指定文件名,则配置项如下:

[mysqld]
log-error=[path / [file_name]]

2、查看错误日志

通过错误日志可以监视系统的运行状态,便于及时发现故障、修复故障。MySQL错误日志是以文本文件形式存储的,可以使用文本编辑器直接查看MySQL错误日志。

如果不知道日志文件的存储路径,可以使用SHOW VARIABLES语句查询错误日志的存储路径。SHOW VARIABLES 语如下:

mysql> show variables like 'log_error';
+---------------+-----------------------+
| Variable_name | Value                 |
+---------------+-----------------------+
| log_error     | /data/mysql/error.log |
+---------------+-----------------------+

3、删除错误日志

四、通用查询日志

1、启动通用查询日志

MySQL服务器默认情况下并没有开启通用查询日志。通过show variables like"%general%;语句可以查询当前查询日志的状态。

mysql> show variables like '%general%';
+------------------+--------------------------------+
| Variable_name    | Value                          |
+------------------+--------------------------------+
| general_log      | OFF                            |
| general_log_file | /data/mysql/data/localhost.log |
+------------------+--------------------------------+

开启通用日志:

set @@golbal.general_log=1
# 关闭设置为0即可

2、查看通用日志

可以使用文本编辑器直接打开;

3、删除通用查询日志

  • 在数据目录中找到日志文件所在目录C:ProgramData\MySQL\MySQL Server8.0\Data\,删除该后缀为.log 的文件。

  • 通过 MySQLadmin -flush logs 命令建立新的日志文件,执行命令如下

mysqladmin-u rootp flush-logs
  • 执行完该命令,可以看到 C:\ProgramData\MySQL\MySQL Server 8.0\Data\目录中已经建立了新的日志文件。

五、慢查询日志

慢查询日志是记录查询时长超过指定时间的日志。慢查询日志主要用来记录执行时间较长的查询语句。通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化。

1、启动和设置慢查询日志

默认关闭,通过配置文件my.ini或者my.cnf中的log_slow_queries选项打开,也可咋MySQL服务启动的时候使用--log-slow-queries[=file_name]启动慢查询日志。启动慢查询时,需要在my.ini或者my.cnf文件中配置long_query_time选项指定阈值,某查询语句超出这个值,这个记录就被记录到慢查询日志文件中;

[mysqld]
log-slow-queries[=path / [file_name]]
long_query_time=n

2、查看慢查询日志

直接使用文本编辑器查看。

3、删除慢查询日志

和通用查询日志一样,慢查询日志也可以直接删除。删除后在不重启服务器的情况下,需要执行MySQLadmin -u root -p flush-logs重新生成日志文件,或在客户端登录到服务器执行flush logs语句重建日志文件。

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小李学不完

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

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

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

打赏作者

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

抵扣说明:

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

余额充值