深入浅出MySQL开发优化和管理维护学习笔记之MySQL日志文件

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一、配置文件分类与参数


  1. 错误日志


数据库启停过程中错误,运行过程中的异常。

保存方式: 文件

启用方式:无需使用开关参数启用,默认开启

相关参数

文件位置参数log_error,如果不指定值默认在DATADIR目录下,名称为host_name.error。



2.二进制(bin)日志


所有DDL和DML但不包含查询语句。

保存方式: 文件

启用方式:需要配置文件中设置开关参数启用,默认关闭(OFF)

文件位置参数log_bin,如果不指定名称,名称为host_name-bin.NUM;如果只指定名称,以指定名称。均默认放到DATADIR目录下。

相关参数

binlog_format=STATEMENT/ROW/MIXED,日志格式控制,默认自动开启。

expire_logs_days=N,日志保存周期,默认为0,无限制。

也可使用命令删除SQL命令行RESET MASTER 或 PERGE MASTER LOGS

读取命令

mysqlbinlog


使用场景:高可用主从复制、数据库恢复时使用


3.查询日志


全部SQL语句包含select。

保存方式: 文件 或 表(general_log)

要永久生效,需要配置文件中设置开关参数启用,默认关闭(OFF)

文件位置参数general_log,参数已经显示设置设置为 1 或不设置均表示启用,设置为0 表示禁用。

相关参数

general_log_file,如果未指定值,或者未显示设置log_output的值,默认放到DATADIR目录下hostname.log


4.慢查询日志


全部超过参数long_query_time且扫描记录数不小于long_query_time的SQL语句,管理语句和不适用索引的select不记录。

保存方式: 文件 ,日志文件中可以精确到微妙 或 表(slow_log),表中记录只能精确到秒。

启用方式:要永久生效,需要配置文件中设置开关参数启用,默认关闭(OFF)

文件位置参数slow_query_log,参数已经显示设置,值设置为 1 或不设置均表示启用,设置为0 表示禁用。

相关参数

slow_query_log_file ,如果未指定值,默认hostname-slow.log放到DATADIR目录下

log_output = file,table,可以指定其一或全部选择;

相关工具

msqldumpslow 对慢日志进行分类,建议正常情况下开启设置,并经常查看。


使用场景:SQL优化,服务器性能诊断。


5.第三方日志工具

慢查询日志、查询日志、二进制日志、用户自定义类型日志查看工具

mysqlsla



二、配置文件举例


[root@mdb01 mysql]# pwd

/opt/mysql

[root@mdb01 mysql]# vi my.cnf 


# Start of my.cnf file

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html


[mysqld]


# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M


# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin


####### log setting ########

### bin log ###

log-bin

binlog_format = STATEMENT

expire_logs_days = 7


### slow log ###

slow_query_log = 1

log_output = file


# These are commonly set, remove the # and set as required.

# basedir = .....

# datadir = .....

# port = .....

# server_id = .....

# socket = .....


# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M


sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES


# End of my.cnf file


三、验证配置


1.二进制日志


mysql> show variables like "log_bin";

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin       | ON    |

+---------------+-------+

1 row in set (0.00 sec)


mysql> show variables like "binlog_format%";

+---------------+-----------+

| Variable_name | Value     |

+---------------+-----------+

| binlog_format | STATEMENT |

+---------------+-----------+

1 row in set (0.00 sec)


mysql> show variables like "expire_logs_days";

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| expire_logs_days | 7     |

+------------------+-------+

1 row in set (0.00 sec)


2.慢查询日志


mysql> show variables like "slow_query_log%";

+---------------------+--------------------------------+

| Variable_name       | Value                          |

+---------------------+--------------------------------+

| slow_query_log      | ON                             |

| slow_query_log_file | /opt/mysql/data/mdb01-slow.log |

+---------------------+--------------------------------+

2 rows in set (0.00 sec)


mysql> show variables like "log_output%";

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_output    | FILE  |

+---------------+-------+

1 row in set (0.01 sec)


mysql> 



本文转自 pgmia 51CTO博客,原文链接:http://blog.51cto.com/heyiyi/1638585

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
20天前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
196 90
|
14天前
|
前端开发 JavaScript 程序员
鸿蒙开发:console日志输出
针对初学者而言,大家只需要掌握住日志打印即可,等到了鸿蒙应用开发的时候,还有一个鸿蒙原生的打印工具HiLog,到时,我们也会详细的去讲述,也会针对HiLog,封装一个通用的工具类。
60 11
鸿蒙开发:console日志输出
|
2月前
|
存储 关系型数据库 MySQL
MySQL索引学习笔记
本文深入探讨了MySQL数据库中慢查询分析的关键概念和技术手段。
320 80
|
1月前
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
137 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
|
18天前
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
36 16
|
1月前
|
关系型数据库 MySQL 数据库
图解MySQL【日志】——两阶段提交
两阶段提交是为了解决Redo Log和Binlog日志在事务提交时可能出现的半成功状态,确保两者的一致性。它分为准备阶段和提交阶段,通过协调者和参与者协作完成。准备阶段中,协调者向所有参与者发送准备请求,参与者执行事务并回复是否同意提交;提交阶段中,若所有参与者同意,则协调者发送提交请求,否则发送回滚请求。MySQL通过这种方式保证了分布式事务的一致性,并引入组提交机制减少磁盘I/O次数,提升性能。
55 4
图解MySQL【日志】——两阶段提交
|
1月前
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
43 5
图解MySQL【日志】——Redo Log
|
17天前
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
25 4
|
1月前
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
177 28
|
1月前
|
SQL 缓存 关系型数据库
MySQL原理简介—7.redo日志的底层原理
本文介绍了MySQL中redo日志和undo日志的主要内容: 1. redo日志的意义:确保事务提交后数据不丢失,通过记录修改操作并在系统宕机后重做日志恢复数据。 2. redo日志文件构成:记录表空间号、数据页号、偏移量及修改内容。 3. redo日志写入机制:redo日志先写入Redo Log Buffer,再批量刷入磁盘文件,减少随机写以提高性能。 4. Redo Log Buffer解析:描述Redo Log Buffer的内存结构及刷盘时机,如事务提交、Buffer过半或后台线程定时刷新。 5. undo日志原理:用于事务回滚,记录插入、删除和更新前的数据状态,确保事务可完整回滚。
141 22

热门文章

最新文章