mysql insert 不需要日志_详解MySQL|你不知道的新特性-8.0错误日志增强

5087c751afbb4bae3580bf64fca0849c.png

MySQL 8.0 重新定义了错误日志输出和过滤,改善了原来臃肿并且可读性很差的错误日志。

比如增加了 JSON 输出,在原来的日志后面以序号以及 JSON 后缀的方式展示。

比如我机器上的 MySQL 以 JSON 保存的错误日志 mysqld.log.00.json:

[root@centos-ytt80 mysql80]# jq . mysqld.log.00.json{  "log_type": 1,  "prio": 1,  "err_code": 12592,  "subsystem": "InnoDB",  "msg": "Operating system error number 2 in a file operation.",  "time": "2019-09-03T08:16:12.111808Z",  "thread": 8,  "err_symbol": "ER_IB_MSG_767",  "SQL_state": "HY000",  "label": "Error"}{  "log_type": 1,  "prio": 1,  "err_code": 12593,  "subsystem": "InnoDB",  "msg": "The error means the system cannot find the path specified.",  "time": "2019-09-03T08:16:12.111915Z",  "thread": 8,  "err_symbol": "ER_IB_MSG_768",  "SQL_state": "HY000",  "label": "Error"}{  "log_type": 1,  "prio": 1,  "err_code": 12216,  "subsystem": "InnoDB",  "msg": "Cannot open datafile for read-only: './ytt2/a.ibd' OS error: 71",  "time": "2019-09-03T08:16:12.111933Z",  "thread": 8,  "err_symbol": "ER_IB_MSG_391",  "SQL_state": "HY000",  "label": "Error"}

以 JSON 输出错误日志后可读性和可操作性增强了许多。这里可以用 Linux 命令 jq 或者把这个字串 COPY 到其他解析 JSON 的工具方便处理。

只想非常快速的拿出错误信息,忽略其他信息。

[root@centos-ytt80 mysql80]#  jq   '.msg' mysqld.log.00.json"Operating system error number 2 in a file operation.""The error means the system cannot find the path specified.""Cannot open datafile for read-only: './ytt2/a.ibd' OS error: 71""Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.""Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue."

使用 JSON 输出的前提是安装 JSON 输出部件。

INSTALL COMPONENT 'file://component_log_sink_json';完了在设置变量 SET GLOBAL log_error_services = 'log_filter_internal; log_sink_json';

格式为:过滤规则;日志输出;[过滤规则]日志输出;

查看安装好的部件

mysql> select * from mysql.component;+--------------+--------------------+---------------------------------------+| component_id | component_group_id | component_urn                         |+--------------+--------------------+---------------------------------------+|            2 |                  1 | file://component_log_sink_json        |+--------------+--------------------+---------------------------------------+3 rows in set (0.00 sec)

现在设置 JSON 输出,输出到系统日志的同时输出到 JSON 格式日志。

mysql> SET persist log_error_services = 'log_filter_internal; log_sink_internal; log_sink_json';Query OK, 0 rows affected (0.00 sec)

来测试一把。我之前已经把表 a 物理文件删掉了。

mysql> select * from a;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`a`.

现在错误日志里有 5 条记录。

[root@centos-ytt80 mysql80]# tailf  mysqld.log2019-09-03T08:16:12.111808Z 8 [ERROR] [MY-012592] [InnoDB] Operating system error number 2 in a file operation.2019-09-03T08:16:12.111915Z 8 [ERROR] [MY-012593] [InnoDB] The error means the system cannot find the path specified.2019-09-03T08:16:12.111933Z 8 [ERROR] [MY-012216] [InnoDB] Cannot open datafile for read-only: './ytt2/a.ibd' OS error: 712019-09-03T08:16:12.112227Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.2019-09-03T08:16:14.902617Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.

JSON 日志里也有 5 条记录。

[root@centos-ytt80 mysql80]# tailf mysqld.log.00.json{ "log_type" : 1, "prio" : 1, "err_code" : 12592, "subsystem" : "InnoDB", "msg" : "Operating system error number 2 in a file operation.", "time" : "2019-09-03T08:16:12.111808Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_767", "SQL_state" : "HY000", "label" : "Error" }{ "log_type" : 1, "prio" : 1, "err_code" : 12593, "subsystem" : "InnoDB", "msg" : "The error means the system cannot find the path specified.", "time" : "2019-09-03T08:16:12.111915Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_768", "SQL_state" : "HY000", "label" : "Error" }{ "log_type" : 1, "prio" : 1, "err_code" : 12216, "subsystem" : "InnoDB", "msg" : "Cannot open datafile for read-only: './ytt2/a.ibd' OS error: 71", "time" : "2019-09-03T08:16:12.111933Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_391", "SQL_state" : "HY000", "label" : "Error" }{ "log_type" : 1, "prio" : 2, "err_code" : 12049, "subsystem" : "InnoDB", "msg" : "Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.", "time" : "2019-09-03T08:16:12.112227Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_224", "SQL_state" : "HY000", "label" : "Warning" }{ "log_type" : 1, "prio" : 2, "err_code" : 12049, "subsystem" : "InnoDB", "msg" : "Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.", "time" : "2019-09-03T08:16:14.902617Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_224", "SQL_state" : "HY000", "label" : "Warning" }

那可能有人就问了,这有啥意义呢?只是把格式变了,过滤的规则我看还是没变。

那我们现在给第二条日志输出加过滤规则

先把过滤日志的部件安装起来

INSTALL COMPONENT 'file://component_log_filter_dragnet';mysql> SET persist log_error_services = 'log_filter_internal; log_sink_internal; log_filter_dragnet;log_sink_json';Query OK, 0 rows affected (0.00 sec)

只保留 error,其余的一律过滤掉。

SET GLOBAL dragnet.log_error_filter_rules = 'IF prio>=WARNING THEN drop.';

检索一张误删的表

mysql> select * from a;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`a`.

查看错误日志和 JSON 错误日志

发现错误日志里有一条 Warning,JSON 错误日志里的被过滤掉了。

2019-09-03T08:22:32.978728Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.

再举个例子,每 60 秒只允许记录一个 Warning 事件

mysql> SET GLOBAL dragnet.log_error_filter_rules = 'IF prio==WARNING THEN throttle 1/60.';Query OK, 0 rows affected (0.00 sec)

多次执行

mysql> select * from b;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`b`.mysql> select * from b;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`b`.mysql> select * from b;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`b`.

现在错误日志里有三条 warning 信息

2019-09-03T08:49:06.820635Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`b` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.2019-09-03T08:49:31.455907Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`b` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.2019-09-03T08:50:00.430867Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`b` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.

mysqld.log.00.json 只有一条

{ "log_type" : 1, "prio" : 2, "err_code" : 12049, "subsystem" : "InnoDB", "msg" : "Cannot calculate statistics for table `ytt2`.`b` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.", "time" : "2019-09-03T08:49:06.820635Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_224", "SQL_state" : "HY000", "and_n_more" : 3, "label" : "Warning" }

总结,我这里简单介绍了下 MySQL 8.0 的错误日志过滤以及 JSON 输出。MySQL 8.0 的component_log_filter_dragnet 部件过滤规则非常灵活,可以参考手册,根据它提供的语法写出自己的过滤掉的日志输出。

e3c4922b8df7608940ee7a36817db2e1.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea中java文件怎么运行_Java入门基础篇-如何在Java中创建只读文件

本文选自千锋教育《Java语言程序设计》,如需转载请注明出处,谢谢!1、如何创建只读文件要使文件只读,我们只要将文件属性更改为只读就行;可以使用File类的setReadOnly()方法来实现。它会返回一个布尔值,这样…

模仿JavaAppArguments.java示例

要求:编写一个程序,此程序从命令行接受多个数字,求和之后输出结果。 设计思想:命令行的参数都是字符串,需要定义一个整形数组将其转化为整数,然后实现数字的相加,最后输出结果。 程序流程图&…

2020年408真题_自考书院:2020年10月00830现代语言学真题

免费发布2020年10月全国统一命题《00830现代语言学》试卷其他真题:甘肃自考网 >> 历年试题 >>http://www.gseea.net点击历年真题查看更多真题和复习资料【互动交流平台】:交流QQ一群:35167222交流QQ二群:251822544自考…

linux优先级队列,Python3 线程优先级队列( Queue)

导读Python 的 Queue 模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列 PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用,可以使用队列来…

泛泰A860(高通公司8064 cpu 1080p) 拂4.4中国民营recovery TWRP2.7.1.2文本(通过刷第三版)...

专业第三方开发团队 VegaDevTeam (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo crazyi(天下无雪) windxixi(雪狐) wangsai008 组成) 说说中文TWRP的简史: 中文TWRP是本人在2012.10月在原英文TWRP的基础上首次改…

电脑机箱cad图纸_如何批量打印高清黑白CAD图纸?这么好用的方法现在才知道

工作中为了更方便查看和传阅CAD图纸,经常要将CAD图纸打印出来,有时候要打印很多张,而且还不是最终定稿!如果打印成彩印也太浪费墨水了!所以批量打印黑白图纸的技巧就显得十分重要啦!很多小伙伴们都不知道怎…

Codeforces Round #233 (Div. 2)D. Painting The Wall 概率DP

D. Painting The WallUser ainta decided to paint a wall. The wall consists of n2 tiles, that are arranged in an n  n table. Some tiles are painted, and the others are not. As he wants to paint it beautifully, he will follow the rules below. Firstly user a…

ahp层次分析法_基于层次分析法(AHP)的店铺选址应用研究

导读在连锁行业,店铺选址是其中很重要的一个方面。影响店铺选址的指标(因素)很多,决策中经常需要对店铺影响各指标进行量化分析。本文应用层级分析法(AHP),对影响店铺选址的指标(因素)权重进行量化分析,以帮助决策者从备选的多个店…

python批量删缩进_鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?...

鬼畜小姐姐野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?前言半个月前,后台有个小伙伴问我,如何将视频中的音频提取出来,并且将声音转成文字写入到 word 中,正好接下来的文章要用到百度的语音…

数据结构:点之间的最短距离--Floyd算法

Floyd算法 Floyd算法 Dijkstra算法是用于解决单源最短路径问题的,Floyd算法则是解决点对之间最短路径问题的。Floyd算法的设计策略是动态规划,而Dijkstra採取的是贪心策略。当然,贪心算法就是动态规划的特例。 算法思想 点对之间的最短路径仅…

shell 获取家目录_一篇教会你写90%的shell脚本

shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行…

数据结构c语言版第四章题库,数据结构(C语言版)(第4版)习题

数据结构(C语言版)(第4版)习题 习题 11.1 选择题。(1)计算机识别、存储和加工处理的对象统称为 。A.数据 B.数据元素 C.数据结构 D.数据类型(2)数据结构通常是研究数据的 及它们之间的联系。A.存储和逻辑结构 B.存储和抽象 C.理想和抽象 D.理想和逻辑(3)…

C++刷称号——2707: 素数与要素

Description 从键盘输入的随机整数n,如果n不是质数,然后计算n所有的因素(不含1)。例如,对于16,出口2,4,8;否则输出“It is a prime number.” 推断素数和需求因素已完成功能。 Input 随机整数n …

python opencv输出mp4_Python玩转视频处理(四):视频按场景进行分割

在上一篇文章(python在手,女神视频轻松有)分享了用AI人脸识别技术标记人物出现时间点来截取视频片段的教程,它的局限性在于只能通过识别特定的对象(比如人脸)来操作。在本文中将分享一个按场景进行分割视频…

stm32 isp下载官方软件android_OpenCanvas免费版下载_OpenCanvas绘图软件官方版下载7.0.25...

OpenCanvas 是一款小巧的CG手绘软件,让用户在使用数位板在电脑上绘图时,就像是在纸上手绘一样,可以画出极为细致的图像。OpenCanvas功能简捷、体积小巧、运行速度快,大家可以很快上手,非常适合入门级手绘爱好者使用。对…

【转】图文详解YUV420数据格式

YUV格式有两大类:planar和packed。 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。 YUV,分为三个分…

python安装pip_在MAC下安装pip,并关联到相应的python版本

在MAC下安装pip,并关联到相应的python版本 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 不多说了,说就是电脑重…

cat命令详解_好程序员Python培训之详解eval好与坏

好程序员Python培训之详解eval好与坏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧。eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的…

对代理商的评价怎么写_简历中的自我评价怎么写才能更吸引人?

有统计报告显示:HR每天看到的职位简历至少1000,每封简历的停留时间不过10秒。在这么短的时间内,让hr印象深刻,自我评价的价值就出现啦!不少人认为自我评价要幽默风趣,例如:“您都看到这儿了&…

sdk是什么_人脸识别在美颜SDK中存在什么意义?

在得益于短视频、直播平台的飞速发展下,美颜SDK也得到了很大的发展,变得越来越受欢迎。美颜SDK现在已经融入到我们的生活,是社交中必不可少的工具。现在人们对于美颜的要求越来越高,这就意味着美颜SDK的质量也要越来越好。而人脸识…