• GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:KAiTO
  • 文章来源:社区原创

往期回顾:

  • 图文结合带你搞懂MySQL日志之Redo Log(重做日志)
  • 图文结合带你搞懂InnoDB MVCC
  • 图文结合带你搞定MySQL日志之Undo log(回滚日志)

什么是错误日志

错误日志(Error Log) 是 MySQL 中最常用的一种日志,主要记录 MySQL 服务器启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况等。

错误日志记录了啥

错误日志包含 mysqld 启动和关闭的时间信息,还包含诊断消息,如服务器启动和关闭期间以及服务器运行时出现的错误、警告和其他需要注意的信息。

例如:如果 mysqld 检测到某个表需要检查或修复,会写入错误日志。

根据错误日志配置,错误消息还可能填充 performance_schema.error_log 表,以便为日志提供 SQL 接口,使错误日志能够查询。

如果用 mysqld_safe 启动 mysqld,mysqld_safe 会将消息写入错误日志。

例如,当 mysqld_safe 注意到 mysqld 异常退出时,它会重新启动 mysqld,并将 mysqld 重新启动的消息写入错误日志。

怎么启动错误日志

在MySQL数据库中,错误日志功能是默认开启的。而且,错误日志无法被禁止。

默认情况下,错误日志存储在MySQL数据库的数据文件夹下,名称默认为mysqld.log(Linux系统)或hostname.err(mac系统)。如果需要制定文件名,则需要在my.cnf或者my.ini中做如下配置:

[mysqld]
log-error=[path/[filename]] #path为日志文件所在的目录路径,filename为日志文件名

修改配置项后,需要重启 MySQL 服务以生效。

查看日志

MySQL错误日志是以文本文件形式存储的,可以使用文本编辑器直接查看。 查询错误日志的存储路径:

mysql> show variables like 'log_err%';
+----------------------------+----------------------------------------+
| Variable_name              | Value                                  |
+----------------------------+----------------------------------------+
| log_error                  | /var/log/mysqld.log                    |
| log_error_services         | log_filter_internal; log_sink_internal |
| log_error_suppression_list |                                        |
| log_error_verbosity        | 2                                      |
+----------------------------+----------------------------------------+
4 rows in set (0.00 sec)

参数解析

  • log_error 定义为错误日志文件路径。
  • log_error_services 控制哪个日志组件启用错误日志,该变量可以包含具有0、1或多组件列表;在后一种情况下,组件可以用分号或(从MySQL 8.0.12开始)逗号分隔,另外服务器按照列出的顺序执行组件。 默认情况下,log_error_services 具有以下值:
mysql> SELECT @@GLOBAL.log_error_services;
+----------------------------------------+
| @@GLOBAL.log_error_services            |
+----------------------------------------+
| log_filter_internal; log_sink_internal |
+----------------------------------------+
1 row in set (0.00 sec)
  • log_error_suppression_list 用于错误日志的事件的抑制作用,有些日志不希望记录下来。
  • log_error_verbosity日志记录等级:
log_error_verbosity Value Permitted Message Priorities
1 ERROR
2 ERROR, WARNING
3 ERROR, WARNING, INFORMATION
  • 在MGR中建议设置为3可以记录更多日志信息,便于跟踪问题。

log_timestamps控制日志显示时间

在MySQL 5.7.2 新增了 log_timestamps 这个参数,该参数主要是控制 error loggenera log,等等记录日志的显示时间参数。 在 5.7.2 之后改参数为默认 UTC 这样会导致日志中记录的时间比中国这边的慢,导致查看日志不方便。

mysql> SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| log_timestamps | UTC   |
+----------------+-------+
1 row in set (0.00 sec)

可以看到使用的时间是UTC时间,UTC是世界公用的一个时间,那么我们本地时间和UTC时间就必然存在一个换算关系。按北京时间来算,北京时间将比UTC时间快8个小时

修改方法:

  • MySQL5.7修改
1.set global log_timestamps=system;
2.修改后可以在配置文件再添加[mysqld]log_timestamps=system
  • MySQL8.0修改
1.set global log_timestamps=system;
  • 小节结论 1.为了国内用户便于读取日志信息,建议将参数写入到配置文件my.cnf 2.MySQL 8.0支持参数log_timestamps持久化设置。

删除\刷新日志

对于很久以前的错误日志,数据库管理员查看这些错误日志的可能性不大,可以将这些错误日志删除,以保证 MySQL 服务器上的硬盘空间。MySQL 的错误日志是以文本文件的形式存储在文件系统中的,可以直接删除。

#刷新日志
[root@kaito log]# mysqladmin -uroot -p flush-logs
Enter password:
mysqladmin: refresh failed; error: 'Could not open file '/var/log/mysqld.log' for error logging.'

官网提示:

补充操作:

install -omysql -gmysql -m0644 /dev/null /var/log/mysqld.log

·flush-logs·指令操作:

  • MySQL5.5.7以前的版本,flush-logs将错误日志文件重命名为filename.err_old,并创建新的日志文件。
  • 从MySQL5.5.7开始,flush-logs只是重新打开日志文件,并不做日志备份和创建的操作。
  • 如果日志文件不存在,MySQL启动或者执行flush-logs时会自动创建新的日志文件。重新创建错误日志,大小为0字节。

参考文章

《MySQL是怎样运行的--从根儿上理解MySQL》—小孩子4919


Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

捉虫活动详情:https://greatsql.cn/thread-97-1-1.html

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

图文结合带你搞懂MySQL日志之Error Log(错误日志)相关推荐

  1. MySQL日志 - Error Log错误日志

    MySQL日志历史文章, <MySQL日志 - General Query Log> MySQL的错误日志,是我们排查问题的主要线索之一,引用GreatSQL技术社区的这篇文章<图文 ...

  2. 学习最新大厂付费视频时整理的万字长文+配图带你搞懂 MySQL

    万字长文+配图带你搞懂 MySQL MySQL SQL的介绍 SQL分类 MySQL语法 创建数据库 修改.删除.使用数据库 DDL查询数据表 DDL创建数据表 修改数据表结构 删除数据表 DML添加 ...

  3. 丁奇mysql45讲百度云下载_MySQL实战45讲,丁奇带你搞懂MySQL【完结】

    开篇词.这一次,让我们一起来搞懂MySQL.mp3 开篇词.这一次,让我们一起来搞懂MySQL.pdf 01.基础架构:一条SQL查询语句是如何执行的?.mp3 01.基础架构:一条SQL查询语句是如 ...

  4. 图文结合带你搞懂InnoDB MVCC

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 前情提要 当前读 快照读 什么是MVCC 三个隐藏字 ...

  5. 一文带你搞懂 MySQL 分区!

    一.InnoDB逻辑存储结构 段 区 页 二.分区概述 分区 三.分区类型 RANGE分区 LIST分区 HASH分区 KEY分区 四.分区和性能 一.InnoDB逻辑存储结构 首先要先介绍一下Inn ...

  6. 一文带你搞懂 MySQL 中的分区!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | GrimMjx 来源 | https://ww ...

  7. 一文搞懂MySQL数据库分库分表

    如果数据量过大,大家一般会分库分表.分库需要注意的内容比较少,但分表需要注意的内容就多了. 工作这几年没遇过数据量特别大的业务,那些过亿的数据,因为索引设置合理,单表性能没有影响,所以实战中一直没用过 ...

  8. 一文带你搞懂从动态代理实现到Spring AOP

    摘要:本文主要讲了Spring Aop动态代理实现的两种方式. 1. Spring AOP Spring是一个轻型容器,Spring整个系列的最最核心的概念当属IoC.AOP.可见AOP是Spring ...

  9. mysql 什么树_搞懂MySQL InnoDB B+树索引

    一.InnoDB索引 InnoDB支持以下几种索引: B+树索引 全文索引 哈希索引 本文将着重介绍B+树索引.其他两个全文索引和哈希索引只是做简单介绍一笔带过. 哈希索引是自适应的,也就是说这个不能 ...

最新文章

  1. 【c语言】蓝桥杯算法提高 数的运算
  2. 关于UNION ALL与 UNION 用法和区别
  3. java 获取当月第一天和最后一天 获取前一个月第一天和最后一天
  4. 单端 平衡 音质区别_听上去「高大上」的平衡接口,到底有什么门道?
  5. 刚刚,阿里开源了一系列重磅技术炸弹!| 程序员必看
  6. zhlan--Python中常见的几种格式化输出
  7. 跨越跨域大山,前端不得不知道的Ajax
  8. centos安装mysql8.0.13_CentOS 7.4安装MySql 8.0.13及配置
  9. 我的docker随笔35:jenkins服务部署
  10. Javascript - 面向对象
  11. 抓包工具 tcpdump tshark
  12. 十大震撼谷歌地图卫星照
  13. 六、 抽象类与接口对比
  14. C# 获取二维数组的元素个数;获取行数,列数
  15. HTTP请求/响应原理
  16. js获取局域网ip地址
  17. 以太网交换机如何工作以及MAC和PHY
  18. 【个税】2020年个人所得税计算规则
  19. 徙步藏东南不是江南胜似江南
  20. 矢量控制开发笔记1—SVPWM基础

热门文章

  1. 这是请程序员设计的楼梯吧
  2. Binwalk的安装和使用
  3. 解决win10右击鼠标卡顿问题
  4. Comet OJ - 2019国庆欢乐赛(赛后整理)
  5. Excel宏正则匹配
  6. kaggle——泰坦尼克数据集
  7. 项目管理 | 如何制定项目章程?|附项目章程模板下载
  8. 【黑马程序员】《Java基础入门》——02 面向对象
  9. 1905 统计子岛屿
  10. 【2022 CCF BDCI 文心大模型创意项目】乐享词话—诗词意境辅助记忆工具