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

一、配置文件分类与参数

  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

二、配置文件举例

[[email protected] mysql]# pwd

/opt/mysql

[[email protected] 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>

时间: 2024-10-26 05:17:36

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

(DBA之路十)《深入浅出MySQL数据库开发优化与管理维护》的读书笔记

1>mysql的配置文件在/etc下的my.cnf 2)mysql服务是一系列后台进程,mysql数据库是一系列数据目录和数据文件 mysql数据库必须在mysql服务启动之后才可以进行访问 3)查看mysql服务的状态: netstat -nlp 4)启动/关闭服务 cd /usr/bin ./mysqld_safe & mysqladmin -uroot shutdown 5)PRM包安装的启动/关闭服务 service mysql start service mysql restart

MySQL学习笔记之一 MySQL入门

本人之前接触的关系型数据库主要是oracle和sqlserver,而对于mysql知之甚少,但查阅网上资料发现,mysql与oracle非常相似,所以学起来应该不会很费劲,在总结的时候可能更多的把关注点放在它与oracle的不同之处. 一.简介 MySQL是一个真正的多用户.多线程SQL数据库服务器.SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言.MySQL是一个客户端/服务器结构的实现, 它由一个服务器守护程序mysqld和很多不同的客户程序和库组成. MySQL的普及并不局限于

《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音

<Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内容主要都是介绍如何在屏幕上显示图像,事实上除了图像之外,音乐的播放也可以被理解为一种显示的方式,本节将学习在Cocos2d-x中播放声音的方法. (1)在HelloWorld.h中对HelloWorld类进行如下定义: class HelloWorld : public Cocos2d::Layer { pu

《MySQL必知必会》学习笔记_1

#选择数据库 USE mysql #返回可用数据库列表 SHOW DATABASES #返回当前数据库中可用表 SHOW TABLES #返回表列 SHOW COLUMNS FROM db #显示特定数据库的创建语句 SHOW CREATE DATABASE mysql #显示广泛的服务器状态信息 SHOW STATUS #显示授权用户的安全权限 SHOW GRANTS 多条SQL语句必须以分号分隔. SQL语句不区分大小写,习惯性大写. 检索不同的行用DISTINCT,只返回不同的值. 限制结

蓝鸥Unity开发基础—— 二维数组学习笔记

蓝鸥Unity开发基础-- 二维数组学习笔记 一.二维数组 有两个下标的数组叫做二维数组 类似[,]数组名=new类型[常量表达式1,常量表达式2] int[,] numbers= new int[2,3]; [0,0] [0,1] [0,2] [1,0] [1,1] [1,2] 举例说明 using System; namespace Lesson16{    class MainClass    {        public static void Main (string[] args)

cocos2dx游戏开发——别踩白块学习笔记(二)——经典模式的实现

一.创建GameScene以及GameLayer 就是简单创建一个Scene而已,在此就不多说啦~,可以参照我的打飞机的学习笔记(2). 二.添加一个开始栏 很简单,就是调用Block中的create方法就可以啦~,只是需要传入大小和颜色等等的参数即可. void GameLayer::addStartLine() { auto block = Block::createWithArgs(Color3B::YELLOW, Size(visibleSize.width,visibleSize.he

Unix文件系统学习笔记之二: 文件描述符、inode和打开文件表

Unix文件系统学习笔记之二: 文件描述符.inode和打开文件表 系统盘上数据的布局 文件系统无非是关于数据在磁盘上的组织以及存储空间管理的,为此,首先需要知道磁盘上数据的总体布局方式.以Unix为例,最重要的一张表如下: Unix 进程管理中和用户文件.io 最相关的数据结构:usr 数据结构 The procstructure does not record information related to file access.  However the userstructure con

Linux 程序设计学习笔记----动手编写makefile文件

Befroe Beginning. 之前定了暑假的plan ,关于Linux的书籍现在在看的是ALP和Linux高级程序设计(杨宗德)第三版.在计划中的是Linux高级环境编程. 现在开始关于Linux程序设计的第一篇学习笔记. 本来打算把名字写成教程,不过觉得自己完全是新手在自学,还是写学习笔记比较负责和适合. 希望可以一起学习进步. 引入 首先我们假设这样一个场景.我们有一个程序包含了三个文件,分别是源码文件main_plus,c和function_plus.c以及头文件mydefine_p

《鸟哥的Linux私房菜》学习笔记(1)——文件与目录

在Linux中,任何设备都是文件,不仅如此,连数据通信的接口也有专门的文件负责.可以说,一切皆文件,目录也是一种文件,是路径映射.因此,文件系统是Linux的基础. 一.文件与目录管理命令 1.ls(list)--查看文件与目录命令 在linux中,该命令可能是最多被执行的,因为我们随时要知道文件或者目录的相关信息.ls命令默认显示非隐藏文件的文件名(以文件名进行排序)以及文件名代表的颜色. 命令格式:ls [选项] [目录名] 常用参数: -l(long):列出长字符串,包含文件的属性与权限等