MySQL 日志管理

这篇具有很好参考价值的文章主要介绍了MySQL 日志管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

错误日志

主要是用来记录MySQL服务器启动、运行或停止时遇到的问题,像使用 mysql --initialize初始化mysql的基础数据时候,默认给root用户生成的密码就放在错误日志里面。


错误日志的配置只需要一个配置选项即可:

  • log_error :指定错误日志的存放位置和文件名

例如:

log_error = /var/log/mysql/error.log

MySQL的警告日志信息默认也是写入错误日志中的,一般这个值不用修改,使用默认的就行了。

警告日志通过以下参数可以进行配置:

  • log_warnings:用于mysql5.7之前的版本,默认值是1,表示将警告日志写入错误日志中。0表示不写入错误日志文件。值大于1,表示”失败的连接”的信息和创建新连接时”拒绝访问”类的错误信息也会被记录到错误日志中。

  • log_error_verbosity:mysql5.7及后面版本用的配置选项,默认的值是3

通用日志

通用日志主要是记录所有关于服务器的活动,包括所有客户端的连接和所有执行的SQL语句,mysql的通用日志是关闭的,如果需要设置可以通过 general_log 选项开启通用日志。


通用查询日志记录了大量的信息,它可能会对数据库服务器的性能产生显著影响,特别在高负载的生产环境中。而且还会占用大量磁盘空间和磁盘 I/O 问题,所以一般调试的时候才会开启通用日志。


配置通用日志主要使用以下选项:

  • general_log:设置是否开启通用日志,默认为关闭(0),1表示开启

  • general_log_file:设置通用日志的存放位置和文件名


例如:

[mysqld]
general_log       = 1  # 1表示开启 0表示关闭
general_log_file  = /var/log/mysql/mysql.log

慢查询日志

慢查询日志记录了执行时间超过特定阈值的所有查询,可以根据这些信息监控和诊断数据库性能问题。

一般情况下是需要调试时候才开启慢查询日志,如果长期开启可能会对数据库性能产生一定的影响,且在大型或高负载的环境中日志文件可能会快速增长,占用过多磁盘空间。


可以通过以下选项来配置慢查询日志:

  • slow_query_log:用于设置是否开启慢查询日志,1表示开启,0表示关闭

  • slow_query_log_file:用于指定慢查询日志的存放位置和文件名

  • long_query_time:用于指定慢查询日志的阈值,单位秒,默认为10s,超过这个时间的就会被记录到slow_query_log_file指定的文件。


例如:

[mysqld]
slow_query_log       = 1
slow_query_log_file  = /var/log/mysql/slow.log
long_query_time      = 2

二进制日志

二进制日志(Binary Log)是一种特殊类型的日志文件,它记录了所有修改数据库内容的操作,比如 INSERT、UPDATE 和 DELETE 语句,以及数据定义语言(DDL)语句,如 CREATE TABLE、ALTER TABLE 等。


MySQL 的二进制日志并不是由纯粹的0和1序列组成的简单文件。实际上,它是一种特殊的二进制格式文件,这种格式旨在高效地存储和记录数据库更改操作。这种专门为 MySQL 优化的格式,既保证了存储和传输的高效性,也便于使用相应的工具进行内容查看和分析。例如mysqlbinlog这个工具就可以查看二进制文件的内容。


MySQL的二进制日志不像通用日志、慢查询日志一样耗费性能,二进制日志对性能的影响通常较小。一般在主从复制的架构中才需要开启二进制日志。


通过以下选项可以完成对二进制日志的配置:

  • log_bin :指定二进制日志的文件名,使用这个选项的时候就开启了二进制日志

  • expire_logs_days:设置二进制日志文件的自动过期天数。过了这个期限,旧的日志文件会被自动删除。

  • max_binlog_size:指定单个二进制日志文件的最大大小。达到这个大小后,MySQL 会关闭当前日志文件,并创建一个新的日志文件。

  • binlog_do_db:指定只有哪些数据库的更改会被记录在二进制日志中。

  • binlog_ignore_db:指定哪些数据库的更改不应该被记录在二进制日志中。

  • skip-log-bin:用于完全禁用二进制日志,配置了这个选项,会覆盖 log_bin 的设置,导致二进制日志不会被启用。


说明: MYSQL5.7只设置了全局系统变量log_bin,没有设置全局系统变量server_id的话,那么MySQL启动不了,而且错误日志没有任何错误信息。


例如:

log_bin              = /var/log/mysql/mysql-bin.log
expire_logs_days     = 14
max_binlog_size      = 256M
binlog-do-db         = position_ehcommon
binlog-do-db         = iot
binlog-do-db         = map

中继日志

中继日志(Relay Log)是在主从复制环境中使用的一种特殊日志文件,可以理解为二进制日志换一个名字,在主从复制环境中,中继日志是存放在从服务器上的。


在 MySQL 的主从复制环境中,中继日志(Relay Log)的作用是暂存从主服务器接收的二进制日志(Binary Log)事件,并在从服务器上执行这些事件以实现数据同步。


一旦这些事件在从服务器上成功执行并且数据同步完成,相应的中继日志文件就不再需要了,因此会被自动删除。这是从服务器自动进行的,以确保不会因为长时间累积大量的中继日志而占用过多的磁盘空间。

重做日志

重做日志(Redo Log)是InnoDB存储引擎特有的日志系统,用于保证事务的持久性和恢复能力。重做日志也是以二进制格式存储存储的,并且如果使用的引擎是innodb,默认是开启了重做日志


重做日志的作用:

数据恢复:重做日志记录了对数据库所做的更改。这些记录用于确保即使在系统崩溃的情况下,这些更改也不会丢失。在数据库崩溃后,重做日志用于恢复未提交的更改,以确保数据的一致性和完整性。

优化写入性能:数据先写入重做日志,然后再异步更新数据文件,可以提高数据库的写入性能。


虽然默认开启了重做日志,但是也可以根据一些参数来进行调整:

  • innodb_log_file_size:设置每个重做日志文件的大小,太小可能导致频繁的日志刷新,影响性能;日志太大可能增加恢复时间。

  • innodb_log_files_in_group:定义了日志文件组中文件的数量。


MySQL异常断电和重做日志:

1、启动时的事务检查: 当 MySQL 启动时,它会检查重做日志(Redo Log),以确定是否有未完成的事务。这是为了确保在系统崩溃或关闭时,数据库能够恢复到一致的状态。


2、完成或回滚事务: 如果发现有未完成的事务,MySQL 会使用重做日志中的信息来完成这些事务(如果它们在崩溃时已经被标记为提交)或者回滚这些事务(如果它们还没有提交)。


3、异常断电的影响: 在异常断电的情况下,重做日志可能会在写入过程中被部分损坏。这意味着日志中可能包含不完整或损坏的信息,使得 MySQL 无法准确地完成或回滚事务。


4、启动失败: 如果 MySQL 无法从重做日志中恢复一致的数据库状态(可能是由于日志损坏),它可能无法正常启动。这是因为启动过程中无法保证数据的完整性和一致性。文章来源地址https://www.toymoban.com/news/detail-748914.html

到了这里,关于MySQL 日志管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql错误日志、通用查询日志、二进制日志和慢日志的介绍和查看

    目录 一.日志 1.日志和备份的必要性 2.mysql的日志类型 (1)错误日志 (2)通用查询日志 (3)二进制日志 (4)慢日志   在数据库保存数据时,有时候会因为误删除数据库,意外断电或程序意外终止,由于病毒造成的数据库损坏或丢失,文件系统损坏后,系统进行自检操作,

    2024年02月15日
    浏览(41)
  • 如何在 MySQL 中开启日志记录并排查操作记录

    在数据库管理中,能够追踪和审查操作记录是至关重要的。这不仅有助于识别和分析正常的数据库活动,还可以在数据泄露或未经授权的更改发生时进行调查和响应。本文将介绍如何在 MySQL 中开启通用日志记录,并如何排查操作记录。 通用日志记录了发往 MySQL 服务器的每一

    2024年04月12日
    浏览(47)
  • 记录一次mysql死锁日志分析

    记录一次mysql死锁-CSDN博客 MySQL死锁日志的查看和分析_mysql死锁日志解读_lkforce的博客-CSDN博客 此文承接以上两篇文章,文章1原创记录,文章2转载分析 一,死锁sql update tt_task          SET navigation_distance = ?,    plan_arrive_time = ?          where id = ? update tt_task set grabbing_status

    2023年04月15日
    浏览(84)
  • MySQL 8.0 架构 之错误日志文件(Error Log)(1)

    【声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) MySQL 8.0 OCP (1Z0-908) 考点概要 MySQL 8.0 OCP (1Z0-908) 考点精析-安装与配置考点1:设置系统变量 【MySQL】控制MySQL优化器行为方法之optimizer_switch系统变量 【MySQL】MySQL系统变量(system v

    2024年01月22日
    浏览(55)
  • mysdql 启动错误 unknown variable windows phpstudy mysql错误日志的正确文件名

    1. windowsphpstudy mysql错误日志的正确文件名 log-error=\\\"D:/phpstudy_pro/Extensions/MySQL5.7.26/data\\\"。 刚好 数据库文件目录也是\\\"D:/phpstudy_pro/Extensions/MySQL5.7.26/data\\\" 其实对应的错误日志是 D:/phpstudy_pro/Extensions/MySQL5.7.26/data.err  注意是.err结尾的文件,而不是linux *.log为结尾的 2   改成 

    2024年03月17日
    浏览(59)
  • Flink CDC MySQL同步MySQL错误记录

    0、相关Jar包 https://repo1.maven.org/maven2/org/apache/flink/flink-connector-jdbc/3.1.1-1.16/ https://repo1.maven.org/maven2/com/ververica/flink-sql-connector-mysql-cdc/3.0.0/ 或者从mvnrepository.com下载 https://mvnrepository.com/artifact/com.ververica/flink-sql-connector-mysql-cdc https://mvnrepository.com/artifact/org.apache.flink/flink-connector-

    2024年02月03日
    浏览(52)
  • MySQL八股学习记录6-日志from小林coding

    undo log:InnoDB存储引擎层生成的日志,实现事务中的原子性,主要用于事务回滚和MVCC redo log:InnoDB存储层生成的日志,用于事务的持久化,用于掉电等故障恢复 binlog:server层生成的日志,用于数据备份和主从复制 执行一条增删改语句的时候,不显式的输入begin和commit开启事务,MySQL也会隐式

    2024年02月17日
    浏览(61)
  • MySql运维篇---008:日志:错误日志、二进制日志、查询日志、慢查询日志,主从复制:概述 虚拟机更改ip注意事项、原理、搭建步骤

    错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中 发生任何严重错误时的相关信息 。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysq

    2024年02月04日
    浏览(75)
  • MySQL 日志管理

    主要是用来记录MySQL服务器启动、运行或停止时遇到的问题,像使用 mysql --initialize初始化mysql的基础数据时候,默认给root用户生成的密码就放在错误日志里面。 错误日志的配置只需要一个配置选项即可: log_error :指定错误日志的存放位置和文件名 例如: MySQL的警告日志信息

    2024年02月05日
    浏览(56)
  • 错误记录——mysql5.7连接失败,服务无法启动

    上周安装完mysql后,成功新建了数据库,一切都是正常的,于是就先搁置一旁。今天周一过来,却突然发现无法连接mysql了。 第一反应是服务没有启动,毕竟重启了电脑,说不定是服务没有自动启动,于是打开了服务管理器,却发现没有mysql对应的服务。既然没有,那我就自己

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包