当前位置: 首页 > news >正文

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语句重建日志文件。

致谢

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring面试篇章——IOC
  • 项目比赛项目负责人的汇报艺术:清晰、有条理地反映问题
  • HTML-05新浪新闻-正文-排版
  • 【AI资讯早报】AI科技前沿资讯概览:2024年8月5日早报
  • jvm方法返回相关指令ireturn,areturn,return等分析
  • Hive-函数-时间处理
  • 翻转二叉树 - 力扣(LeetCode)C语言
  • LDR6020快充线,科技与便捷的新宠
  • Vue + View-ui-plus Upload实现手动上传
  • 商家转账到零钱分销返佣申请方案及驳回处理办法
  • 用Python打造精彩动画与视频,7.1 视频处理中的图像处理技巧
  • 山东大学考研机试题——整数序列
  • 力扣:100379. 新增道路查询后的最短距离 I(Java,BFS)
  • Opencv图像增强技术
  • 力扣765.情侣牵手
  • 【译】JS基础算法脚本:字符串结尾
  • Android单元测试 - 几个重要问题
  • AWS实战 - 利用IAM对S3做访问控制
  • C++入门教程(10):for 语句
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • tab.js分享及浏览器兼容性问题汇总
  • TCP拥塞控制
  • uni-app项目数字滚动
  • vue 配置sass、scss全局变量
  • 阿里云购买磁盘后挂载
  • 初识 webpack
  • 多线程 start 和 run 方法到底有什么区别?
  • 分享几个不错的工具
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端自动化解决方案
  • 如何使用 JavaScript 解析 URL
  • 如何在 Tornado 中实现 Middleware
  • 探索 JS 中的模块化
  • 小程序测试方案初探
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 携程小程序初体验
  • 异常机制详解
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #define 用法
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (4)STL算法之比较
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (七)理解angular中的module和injector,即依赖注入
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)模仿学习-完成后台管理页面查询
  • (一)Thymeleaf用法——Thymeleaf简介
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转载)Google Chrome调试JS
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据