【第六章】MySQL日志文件管理

1、日志文件管理概述:

配置文件:/etc/my.cnf

作用:MySQL日志文件是用来记录MySQL数据库客户端连接情况、SQL语句的执行情况以及错误信息告示。

分类:MySQL日志文件分为4种:错误日志、通用查询日志、慢查询日志和二进制日志:

错误日志:记录MySQL服务器的启动、运行、或停止时出现的问题(默认情况,只启用错误日志功能。)

二进制日志:以二进制文件的形式记录了数据库中的操作,但不是记录查询语句。

通用查询日志:记录用户的登录和查询的信息。

慢查询日志:记录所有的执行时间超过指定时间的所有查询或者不使用索引的查询。

  • error log 错误日志 排错 /var/log/mysqld.log【默认开启】
  • bin log 二进制日志 备份 增量备份 DDL DML DCL
  • Relay log 中继日志 复制 接收 replication master
  • slow log 慢查询日志 调优 查询时间超过指定值

 【实例1】SHOW VARIABLES 语句查看是否启用了日志:

mysql> show variables like 'log_%';
+----------------------------------------+----------------------------+
| Variable_name                          | Value                      |
+----------------------------------------+----------------------------+
| log_bin                                | ON                         |
| log_bin_basename                       | /data/mysql/yltlinux       |
| log_bin_index                          | /data/mysql/yltlinux.index |
| log_bin_trust_function_creators        | OFF                        |
| log_bin_use_v1_row_events              | OFF                        |
| log_error                              | /data/mysql/host130.err    |
| log_output                             | FILE                       |
| log_queries_not_using_indexes          | OFF                        |
| log_slave_updates                      | OFF                        |
| log_slow_admin_statements              | OFF                        |
| log_slow_slave_statements              | OFF                        |
| log_throttle_queries_not_using_indexes | 0                          |
| log_warnings                           | 1                          |

其中Value值是off的表示未开启服务。可以更改my.cnf文件中的配置信息,重启mysql服务即可。

注:启用日志功能会降低MySQL数据的执行速度。

 2、错误日志(err log)

 作用:error log 错误日志   排错    /var/log/mysqld.log【默认开启】

 2.1启动和设置错误日志:

  • 日志文件位置:log-error=/var/log/mysqld.log
  • 默认情况下错误日志是开启的,而且无法 被禁止,打开数据安装目录下的my.cnf文件找到log-error选项进行查看:

 【实例2】获取log-error变量的值,即获取error log的详细位置:

mysql> show variables like 'log_error';
+---------------+-------------------------+
| Variable_name | Value                   |
+---------------+-------------------------+
| log_error     | /data/mysql/host130.err |
+---------------+-------------------------+
1 row in set (0.00 sec)

mysql> 

 2.2 查看错误日志

   通过【实例2】可知log_error的详细位置,下边部分error log:

[root@host130 ~]# more /data/mysql/host130.err

2018
-05-25 19:20:15 5800 [Note] InnoDB: The InnoDB memory heap is disabled 2018-05-25 19:20:15 5800 [Note] InnoDB: Mutexes and rw_locks use G CC atomic builtins 2018-05-25 19:20:15 5800 [Note] InnoDB: Memory barrier is not used 2018-05-25 19:20:15 5800 [Note] InnoDB: Compressed tables use zlib 1.2.3 2018-05-25 19:20:15 5800 [Note] InnoDB: Using Linux native AIO 2018-05-25 19:20:15 5800 [Note] InnoDB: Using CPU crc32 instructio

 2.3 删除错误日志

 目的:对于存放很久的错误日志,可以保证MySQL服务器上的硬盘空间。

 方法:MySQL数据库中可以使用两种方法开启新的错误日志:mysqladmin命令和flush logs。

 mysqladmin 命令语法如下:

1、sqladmin -u root -p flush-log

  注:上述命令会创建一个新的错误日志,旧的仍然会 保留,会自动在名称后边添加-old内容。

3、二进制日志

 作用:bin log 二进制日志 备份 增量备份 DDL DML DCL

   3.1 启用二进制日志

  • 默认情况下,二进制日志(bin-log)功能是关闭状态,如果要开启需要在 my.cnf文件中的 bin_log 选项前的 # 去掉。 

 【实例3】在my.cnf文件中指定如下内容:

 

log_bin=mysql-bin  
server-id=11 #由于bug问题必须设置这个id,数字随便写
datadir=/var/lib/mysql   #默认指定文件存放位置,可修改,但是要注意权限

  关闭my.cnf文件后重新启动MySQl服务器。

[root@localhost ~]#  systemctl restart mysqld

 【实例4】为了确保二进制日志功能已经开启,可执行如下命令:

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

mysql> 

  3.2查看二进制日志

  • 二进制日志是以二进制的方式存储,不能直接打开,所以需要使用mysql 自带的 mysqlbinlog 命令工具进行查看

 【实例5】进入当前数据库的数据目录:

  • [root@host130 mysql]# pwd
    /data/mysql
    [root@host130 mysql]# mysqlbinlog yltlinux.000037
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
    /*!40019 SET @@session.max_insert_delayed_threads=0*/;
    /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
    DELIMITER /*!*/;
    # at 4
    #180525 19:20:25 server id 128  end_log_pos 120 CRC32 0xb6d0f986 Start: binlog v 4, server v 5.6.36-log created 180525 19:20:25 at startup
    # Warning: this binlog is either in use or was not closed properly.
    ROLLBACK/*!*/;
    BINLOG '
    efEHWw+AAAAAdAAAAHgAAAABAAQANS42LjM2LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAB58QdbEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAYb5
    0LY=
    '/*!*/;
    DELIMITER ;
    # End of log file
    ROLLBACK /* added by mysqlbinlog */;
    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
    [root@host130 mysql]# 

    【实例6】查看二进制日志的文件目录:

  • mysql> show master logs;
    +-----------------+-----------+
    | Log_name        | File_size |
    +-----------------+-----------+
    | yltlinux.000001 |    178523 |
    | yltlinux.000002 |       143 |
    | yltlinux.000003 |       143 |
    | yltlinux.000004 |       143 |
    | yltlinux.000005 |       143 |
    | yltlinux.000006 |       143 |
    | yltlinux.000007 |       120 |
    | yltlinux.000008 |       927 |
    | yltlinux.000009 |       120 |
    | yltlinux.000010 |       120 |
    +-----------------+-----------+
    11 rows in set (0.46 sec)
    
    mysql>

 3.3  清理二进制文件

  原因:二进制日志文件会影响MySQL数据库性能,大量的二进制日志文件会占用大量磁盘空间。

  删除二进制文件的方法:

  1. 删除所有二进制文件,新的二进制文件会重新从 000001开始:
reset master;

  2.根据编号进行删除

 【实例7】删除 yltlinux.000005 之前的二进制日志,删除之后通过 SHOW MASTER  LOGS 语句查看文件列表:

mysql> purge master logs to 'yltlinux.000005';
Query OK, 0 rows affected (0.10 sec)

mysql> show master logs;
+-----------------+-----------+
| Log_name        | File_size |
+-----------------+-----------+
| yltlinux.000005 |       143 |
| yltlinux.000006 |       143 |
| yltlinux.000007 |       120 |
| yltlinux.000008 |       927 |
| yltlinux.000009 |       120 |
| yltlinux.000010 |       120 |
+-----------------+-----------+
33 rows in set (0.00 sec)

mysql> 

  3.根据创建时间进行删除

  • purge master logs before 语句可以将指定时间之前的所有二进制文件删除;
  •  purge master logs before ‘yyyy -mm-dd hh:mm:ss’;
mysql> purge master logs before '2018-02-01 22:46:00';
Query OK, 0 rows affected (0.07 sec)

mysql> show master logs;
+-----------------+-----------+
| Log_name        | File_size |
+-----------------+-----------+
| yltlinux.000032 |       143 |
| yltlinux.000033 |      6796 |
| yltlinux.000034 |       709 |
| yltlinux.000035 |       455 |
| yltlinux.000036 |       143 |
| yltlinux.000037 |       120 |
+-----------------+-----------+
6 rows in set (0.00 sec)

mysql> 

   3.4 恢复二进制日志

   原因:二进制日志记录着MySQL数据库的所有事件操作,当发生灾难性错误时,可以通过二进制日志进行恢复。

  【实例9】使用 mysqlbinlog 命令执行还原操作时,必须是编号小的首先被还原。

mysqlbinlog yltlinux.000001 | mysql -u root -p
mysqlbinlog yltlinux.000002 | mysql -u root -p

4.慢查询日志

  作用:用来记录执行时间超过指定时间的查询语句,可以找出哪些查询语句执行效率低,以方便进行优化。

  • 默认情况下,慢查询日志功能是关闭的。

  4.1 启用慢查询日志:

  • 如下语句查看慢查询的配置:
mysql> show variables like'%slow%';
+---------------------------+------------------------------+
| Variable_name             | Value                        |
+---------------------------+------------------------------+
| log_slow_admin_statements | OFF                          |
| log_slow_slave_statements | OFF                          |
| slow_launch_time          | 2                            |
| slow_query_log            | OFF                          |
| slow_query_log_file       | /data/mysql/host130-slow.log |
+---------------------------+------------------------------+
5 rows in set (0.00 sec)

mysql> 
  •  默认情况下,my.cnf文件的相关内容如下:
    slow-query-log=0                        //表示是否启用慢查询日志,其中0表示不启用,修改为1表示启用慢查询日志
    slow_query_log_file=''WS-slow.log"       //指定慢查询日志生成的文件路径和名称,如果不指定路径名,默认存放在数据库的数据文件下
    long_query_time=10                       //指定时间值,以秒为单位,默认值为10s

  4.2 查看和删除慢查询日志

   4.2.1  查看慢查询日志

   启用慢查询日志时,重新启动 MySQL 数据库,会自动生成一个慢查询日志,日志是以  文本文件  的形式存储,可以直接通过文本文件打开工具查看。

   4.2..2  删除慢查询日志

   删除慢查询日志有两种方法:

  1. 直接手动删除
  2. 通过执行 mysqladmin 命令启用新的慢查询日志,新生成的慢查询日志会直接覆盖旧的查询日志,不需要再手动删除。基本语法如下:
mysqladmin -u root -p flush-logs

  >删除之后重启删除之后需要重启 MySQL 服务,重启之后会生成新的慢查询日志。

  >如果要备份旧日志,可以将旧日志改名,再重启MySQL服务。

转载于:https://www.cnblogs.com/yangleitao/p/9096976.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值