前言:

在 MySQL 系统中,有着诸多不同类型的日志。各种日志都有着自己的用途,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据。这些不同类型的日志有助于我们更清晰的了解数据库,在日常学习及运维过程中也会和这些日志打交道。本节内容将带你了解 MySQL 数据库中几种常用日志的作用及管理方法。

1.错误日志(errorlog)

错误日志记录着 mysqld 启动和停止,以及服务器在运行过程中发生的错误及警告相关信息。当数据库意外宕机或发生其他错误时,我们应该去排查错误日志。

log_error 参数控制错误日志是否写入文件及文件名称,默认情况下,错误日志被写入终端标准输出stderr。当然,推荐指定 log_error 参数,自定义错误日志文件位置及名称。

# 指定错误日志位置及名称

vim /etc/my.cnf

[mysqld]

log_error = /data/mysql/logs/error.log

相关配置变量说明:

log_error={1 | 0 | /PATH/TO/ERROR_LOG_FILENAME}

定义错误日志文件。作用范围为全局或会话级别,属非动态变量。

2.慢查询日志(slow query log)

慢查询日志是用来记录执行时间超过 long_query_time 这个变量定义的时长的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。

与慢查询相关的几个参数如下:slow_query_log:是否启用慢查询日志,默认为0,可设置为0,1。

slow_query_log_file:指定慢查询日志位置及名称,默认值为host_name-slow.log,可指定绝对路径。

long_query_time:慢查询执行时间阈值,超过此时间会记录,默认为10,单位为s。

log_output:慢查询日志输出目标,默认为file,即输出到文件。

默认情况下,慢查询日志是不开启的,一般情况下建议开启,方便进行慢SQL优化。在配置文件中可以增加以下参数:

# 慢查询日志相关配置,可根据实际情况修改

vim /etc/my.cnf

[mysqld]

slow_query_log = 1

slow_query_log_file = /data/mysql/logs/slow.log

long_query_time = 3

log_output = FILE

3.一般查询日志(general log)

一般查询日志又称通用查询日志,是 MySQL 中记录最详细的日志,该日志会记录 mysqld 所有相关操作,当 clients 连接或断开连接时,服务器将信息写入此日志,并记录从 clients 收到的每个 SQL 语句。当你怀疑 client 中的错误并想要确切知道 client 发送给mysqld的内容时,通用查询日志非常有用。

默认情况下,general log 是关闭的,开启通用查询日志会增加很多磁盘 I/O, 所以如非出于调试排错目的,不建议开启通用查询日志。相关参数配置介绍如下:

# general log相关配置

vim /etc/my.cnf

[mysqld]

general_log = 0 //默认值是0,即不开启,可设置为1

general_log_file = /data/mysql/logs/general.log //指定日志位置及名称

4.二进制日志(binlog)

关于二进制日志,前面有篇文章做过介绍。它记录了数据库所有执行的DDL和DML语句(除了数据查询语句select、show等),以事件形式记录并保存在二进制文件中。常用于数据恢复和主从复制。

与 binlog 相关的几个参数如下:log_bin:指定binlog是否开启及文件名称。

server_id:指定服务器唯一ID,开启binlog 必须设置此参数。

binlog_format:指定binlog模式,建议设置为ROW。

max_binlog_size:控制单个二进制日志大小,当前日志文件大小超过此变量时,执行切换动作。

expire_logs_days:控制二进制日志文件保留天数,默认值为0,表示不自动删除,可设置为0~99。

binlog默认情况下是不开启的,不过一般情况下,建议开启,特别是要做主从同步时。

# binlog 相关配置

vim /etc/my.cnf

[mysqld]

server-id = 1003306

log-bin = /data/mysql/logs/binlog

binlog_format = row

expire_logs_days = 15

5.中继日志(relay log)

中继日志用于主从复制架构中的从服务器上,从服务器的 slave 进程从主服务器处获取二进制日志的内容并写入中继日志,然后由 IO 进程读取并执行中继日志中的语句。

relay log 相关参数一般在从库设置,几个相关参数介绍如下:relay_log:定义 relay log 的位置和名称。

relay_log_purge:是否自动清空不再需要中继日志,默认值为1(启用)。

relay_log_recovery:当 slave 从库宕机后,假如 relay log 损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的 relay log ,并且重新从 master 上获取日志,这样就保证了 relay log 的完整性。默认情况下该功能是关闭的,将 relay_log_recovery 的值设置为1可开启此功能。

relay log 默认位置在数据文件的目录,文件名为 host_name-relay-bin,可以自定义文件位置及名称。

# relay log 相关配置,从库端设置

vim /etc/my.cnf

[mysqld]

relay_log = /data/mysql/logs/relay-bin

relay_log_purge = 1

relay_log_recovery = 1

总结:

本篇文章主要讲述了 MySQL 中的几类日志的用途及设置方法,需要注意的是,上述几类日志,若不指定绝对路径,则默认保存在数据目录下,我们也可以新建一个日志目录专用于保存这些日志。还有 redo log 和 undo log 没有讲解,留在下篇文章吧。

mysql general bin区别_MySQL中几种常见的日志相关推荐

  1. mysql general bin区别_MySQL_Mysql常见问题集锦,1,utf8_bin跟utf8_general_ci的区别 - phpStudy...

    Mysql常见问题集锦 1,utf8_bin跟utf8_general_ci的区别 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会 ...

  2. mysql数据库blob区别_MySQL中TEXT与BLOB字段类型的区别

    在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT ...

  3. mysql general bin区别_MySQL_编码utf8_bin和utf8_general_ci的区别

    编码区别 在mysql中存在着各种utf8编码格式,如下(新建数据库时一般选用utf8_general_ci就可以): utf8_bin:将字符串中的每一个字符用二进制数据存储,区分大小写(在二进制中 ...

  4. mysql 正则 java 区别_MySQL中的正则表达式

    MySQL中允许使用正则表达式定义字符串的搜索条件,性能比like匹配查询还高 MySQL中的正则表达式可以对整数类型或者字符类型检索 使用REGEXP关键字表示正则匹配,默认忽略大小写,如果区分大小 ...

  5. mysql update批量更新_MySql中4种批量更新的方法

    mysql 批量更新共有以下四种办法 1..replace into 批量更新 replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,' ...

  6. mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天

    mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...

  7. java简述常见的布局极其特点_请简要说明 Android 中五种常见布局的特点。_学小易找答案...

    [简答题]请简要说明有序广播和无序广播的区别 [简答题]请简要说明 Android 程序结构中 AndroidManifest.xml 的功能? [简答题]简述李村站人工办理进路的作业过程. [简答题 ...

  8. Java中 9 种常见的 CMS GC 问题分析与解决

    目录 Java中 9 种常见的 CMS GC 问题分析与解决 1. GC 1.1 引言 1.2 概览 2. GC 基础 2.1 基础概念 2.2 JVM 内存划分 2.3 分配对象 2.4 收集对象 ...

  9. unity3d中画线有几种方式_Spring RestTemplate中几种常见的请求方式

    原文 https://segmentfault.com/a/1190000011093597 在Spring Cloud中服务的发现与消费一文中,当我们从服务消费端去调用服务提供者的服务的时候,使用了 ...

最新文章

  1. 看着像学生,实为博导、教授!发过4篇CNS,刚刚又获重要大奖
  2. Could not find a version that satisfies the requirement requests (from version : )
  3. 前端学习(603):计算机基础
  4. 【转】xilinx usb下载器 速度高速极限设置 JTAG-SMT2 JTAG-HS2 JTAG-HS3和Platform Cable USB DLC9 DLC10速度测试
  5. 计算机网络提高网络安全意识,提升网络安全意识 共创清朗网络环境
  6. security中的@EnableGlobalMethodSecurity注解详解
  7. 怎样给 ActiveX 控件签名并打包发布
  8. 持久化消息队列memcacheq的安装配置
  9. Linux操作系统基础命令
  10. 从月薪3000到月薪过万:做什么工作才能过上想要的生活
  11. 弹出USB大容量存储设备时出问题的解决方案
  12. Python批量重命名图像
  13. 日历控件CalendarView
  14. TP-link WR703N v1.17固件不拆机绕过RSA验证强刷openwrt
  15. C++中,system的神级用法总和,实现用C++操作系统
  16. rx580显卡运行不了Linux,RX580吃鸡不流畅原因找到了 真相令人无语
  17. 普元应用服务器软件AppServer V7版本正式发布
  18. 度度熊与邪恶大魔王 百度之星
  19. uniconverter 12中文版(万兴全能格式转换器) v12.0.7.4
  20. 03_RabbitMQ快速入门案例

热门文章

  1. P2B: Point-to-Box Network 点云目标跟踪(CVPR 2020)
  2. 基于旋转轮廓的点云局部浮点型和二值化特征描述(RCS)
  3. VS如何将核心函数封装成dll、lib,并供给第三方调用?
  4. Windows或者linux深度学习环境搭建
  5. docker nginx 简单的代理设置
  6. 基于RDKit的溶解度预测的机器学习模型
  7. 第十六课.Pytorch-geometric入门(一)
  8. var java_var 是 Java 开发的好朋友啊!
  9. BT:胞外酶-化腐朽为神奇的催化剂
  10. Annual Review of Microbiology : 珊瑚微生物组:关乎珊瑚生态系统的健康与恢复