1. 在MySQL的配置文件中添加log_error参数,将错误日志保存到指定文件中;
2. 在MySQL的配置文件中添加general_log参数,将所有SQL语句的执行情况记录到指定文件中;
3. 在MySQL的配置文件中添加slow_query_log参数,将慢查询的语句记录到指定文件中;
4. 在MySQL的配置文件中添加log_queries_not_using_indexes参数,将没有使用索引的查询语句记录到指定文件中;
5. 使用MySQL的SHOW WARNINGS语句,将错误信息记录到表中;
6. 使用MySQL的log_bin参数,将所有更改的日志记录到指定的文件中;
7. 使用MySQL的binlog_format参数,将更改的日志记录到指定的文件中;
8. 使用MySQL的innodb_force_recovery参数,将恢复日志记录到指定的文件中;
9. 使用MySQL的innodb_buffer_pool_dump参数,将缓冲池中的日志记录到指定的文件中;
10. 在MySQL中创建存储过程,将错误日志保存到表中。
MySQL 8.0 重新定义了错误日志输出和过滤,改善了原来臃肿并且可读性很差的错误日志。
比如增加了 JSON 输出,在原来的日志后面以序号以及 JSON 后缀的方式展示
比如我机器上的 MySQL 以 JSON 保存的错误日志 mysqld.log.00.json:
以 JSON 输出错误日志后可读性和可 *** 作性增强了许多。这里可以用 Linux 命令 jq 或者把这个字串 COPY 到其他解析 JSON 的工具方便处理。
只想非常快速的拿出错误信息,忽略其他信息。
使用 JSON 输出的前提是安装 JSON 输出部件。
格式为:过滤规则;日志输出;[过滤规则]日志输出;
查看安装好的部件
现在设置 JSON 输出,输出到系统日志的同时输出到 JSON 格式日志。
来测试一把。我之前已经把表 a 物理文件删掉了。
现在错误日志里有 5 条记录。
JSON 日志里也有 5 条记录。
那可能有人就问了,这有啥意义呢?只是把格式变了,过滤的规则我看还是没变。
那我们现在给第二条日志输出加过滤规则
先把过滤日志的部件安装起来
只保留 error,其余的一律过滤掉。
检索一张误删的表
查看错误日志和 JSON 错误日志
发现错误日志里有一条 Warning,JSON 错误日志里的被过滤掉了。
再举个例子,每 60 秒只允许记录一个 Warning 事件
多次执行
现在错误日志里有三条 warning 信息
mysqld.log.00.json 只有一条
总结,我这里简单介绍了下 MySQL 8.0 的错误日志过滤以及 JSON 输出。MySQL 8.0 的 component_log_filter_dragnet 部件过滤规则非常灵活,可以参考手册,根据它提供的语法写出自己的过滤掉的日志输出。
1、注意存储引擎错误Unknown/unsupported storage engine: InnoDB2、检查一下配置文件中关于innodb的参数,如果有skip-innodb注释掉3、如果重新设置了innodb_log_file_size之类的,需要删除几个ib_logfile,然后重启数据库欢迎分享,转载请注明来源:内存溢出
评论列表(0条)