[MySQL实战-Mysql基础篇]-mysql的日志
参考文章:
https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html
以下实验皆来自于MYSQL 5.7.20 版本。
MySQL中有以下几种日志文件,
分别是:重做日志(redo log)、撤销日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log),DDL日志(元数据日志)
MySQL Server中有如下几种日志:
日志类型 | 写入日志的信息 |
---|---|
错误日志(errorlog) | 启动,运行或停止时遇到问题 |
一般查询日志(general log) | 已 Build 的客户端连接和从客户端收到的语句 |
二进制日志(binlog) | 更改数据的语句(也用于复制) |
中继日志(relay log) | 从复制主服务器收到的数据更改 |
慢查询日志(slow query log) | 执行时间超过_574558秒的查询 |
DDL日志(元数据日志) | 由DDL语句执行的元数据操作 |
Inno中有如下几种日志:
日志类型 | 写入日志的信息 |
重做日志(redo log ) | 通常是物理日志,记录的是数据页的物理修改 |
撤销日志(undo log) |
记录了老版本的数据 |
首先我们说下server中的日志:
错误日志(errorlog)
是什么?
来自官方文档
如上图:错误日志包含 mysqld 启动和关闭时间的记录。它还包含诊断消息,例如在服务器启动和关闭期间以及服务器运行时发生的错误,警告和注释。如果 mysqld 注意到需要自动检查或修复表,则会将消息写入错误日志。
首先我们要知道的是,错误日志在5.7.20版本中会默认打开,若使用windows系统,则错误日志文件在data下的 当前主机名.err 中。
错误日志内容:
错误日志包含mysql启动和关闭的时间,以及mysql启动,关闭,运行中的错误、警告、注释信息。
错误日志如何更改日志路径?
由于我的系统是windows系统,所以我的配置方式是 在my.ini中增加:
log-error=E:/software/tool/environment/mysql/5.7.20/mysql-5.7.20-winx64/logs/error_mysql.err
配置完成之后需要重启mysql服务才能生效。按照官方文档的内容,先尝试下登录的报错信息会不会存储在这里。(注意下执行时间点是16.25分)
然后通过命令: show variables like 'log_error'; 查询error的存储地址
看下具体存储的内容是:
这个时候忽然发现,这个时间好像有点问题
来自官方文档
果然 “log_timestamps
” 是5.7.2版本新增的参数,默认使用时间为UTC(世界标准时间),我们一般而言使用的是北京时间(东八区),领先UTC八个小时。
“log_timestamps”参数控制错误日志(error_log)、一般查询日志(general query log)、慢日志(slow query log)写入文件的时间戳,但是不影响一般查询日志(general query log)、慢日志(slow query log)写入表的时间戳
那么他修改为北京时间的方式(永久生效方式)为:在my.ini文件中增加 log_timestamps=SYSTEM 然后重启mysql服务即可
一般查询日志(general log)
是什么
通用查询日志是mysqld正在执行的操作的一般记录 。当客户端连接或断开连接时,服务器会将信息写入此日志,并记录从客户端收到的每个SQL语句。当您怀疑客户端中存在错误并想要确切知道客户端发送给mysqld的内容时,通用查询日志非常有用。
可以通过 以下的语句查询一般查询日志的信息,是否开启以及一般查询日志的位置。
show variables like 'general_log%'
默认情况下,general_log 是关闭的。开启会记录所有的sql,对服务器的性能上压力很大。在分析sql性能问题上,短时间内打开 general_log 获取sql执行状况还是有帮助的。
如何开启
一般查询日志重要的参数有有三个:
general_log
该参数为一般查询日志是否打开,
打开方式:在my.ini文件中配置
general_log=ON
如果不想重启mysql的话,也可以使用
SET GLOBAL general_log=ON
general_log_file
该参数为一般查询日志的保存路径。
log_output 启用常规查询日志后,服务器会将输出写入log_output
系统变量指定的任何目标 。
该参数其值是列表中选择的一个或多个逗号分隔的单词TABLE
(从日志到表), FILE
(记录到文件)或 NONE
(不记录到表或文件)。 NONE
,如果存在,则优先于任何其他说明符。(默认值为FILE)
日志表是默认创建好了的,有两个:
SHOW CREATE TABLE mysql.general_log; --一般查询日志
SHOW CREATE TABLE mysql.slow_log; --慢日志
慢查询日志(slow query log)
是什么
慢查询日志由执行时间超过几秒的SQL语句组成, 并且至少需要检查几行。获取初始锁定的时间不计入执行时间。mysql在执行完后以及释放所有锁之后向慢查询日志写入一个语句,因此日志顺序可能与执行顺序不同。
慢查询日志参数
long_query_time(最长查询时间):最小值和默认值是0和10.该值可以指定为微秒的分辨率。默认值是10,目前我们线上设置的是0.1
min_examined_row_limit(最小检查行数):默认值为0
slow_query_log(慢日志是否开启):默认OFF
slow_query_log_file(慢日志的保存文件):默认在data文件夹下
服务器按以下顺序使用控制参数来确定是否将查询写入慢查询日志:
查询必须不是管理语句,或者 log_slow_admin_statements 必须启用。
查询必须至少花费
long_query_time
几秒钟,或者log_queries_not_using_indexes(是否将不使用索引的查询记录到慢查询日志中)
必须启用,并且查询不使用行查找的索引。查询必须至少检查过
min_examined_row_limit
行。不得根据
log_throttle_queries_not_using_indexes
设置禁止查询 。
重做日志(redo log)、撤销日志(undo log)后期补充
暂时说到这里。
[MySQL实战-Mysql基础篇]-mysql的日志的更多相关文章
- Docker虚拟化实战学习——基础篇(转)
Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...
- mysql基础篇-----mysql简介
2017-04-19 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 ...
- mysql之存储过程基础篇
1. 创建/使用数据库 mysql> create database me; mysql> use me; 2. 创建表 mysql> create table Stu(Sno ...
- mysql实战优化之四:mysql索引优化
0. 使用SQL提示 用户可以使用use index.ignore index.force index等SQL提示来进行选择SQL的执行计划. 1.支持多种过滤条件 2.避免多个范围条件 应尽量避免在 ...
- [MySQL实战-Mysql基础篇]-mysql架构
1.基本组成 下面是mysql的基本架构示意图 图一 图二 我们可以从图上看出,mysql大体分为两个部分,一个是server层,另一个是引擎层. server层中包含了连接器.查询缓存.分析器.优 ...
- MySQL实战45讲学习笔记:日志系统(第二讲)
一.重要的日志模块:redo log 1.通过酒店掌柜记账思路刨析redo log工作原理 2.InnoDB 的 redo log 是固定大小的 只要赊账记录在了粉板上或写了账本上,之后即使掌柜忘记了 ...
- PHP訪问MySql数据库 0基础篇
在站点后台,常常要与数据库打交道.本文介绍怎样使用XAMPP来管理MySql数据库及怎样用PHP来訪问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...
- JavaSE基础篇—MySQL基础知识点
MySQL MySQL是一种关系数据库管理系统,是一种开源软件.可搭配PHP和Apache可以有更好的性能,也可以工作在众多的平台上.Orcale是一个数据库创建多个用户,MySQL是一个用户创建多个 ...
- 重新整理 mysql 基础篇————— mysql 事务[三]
前言 简单整理一下事务. 正文 事务有四大特性: 1.原子性(atomicity) 一个事务必须被视为一个不可分割的最小单元. 2.一致性(consistency) 数据库总是从一个一致性的状态转换到 ...
随机推荐
- java.lang.NoSuchFieldError: REFLECTION
2020-09-14 09:13:21.415 INFO org.apache.cxf.service.factory.ReflectionServiceFactoryBean Line:457 - ...
- FZU ICPC 2020 寒假训练 6 —— 字符串处理
P1603 斯诺登的密码 题目描述 2013年X月X日,俄罗斯办理了斯诺登的护照,于是他混迹于一架开往委内瑞拉的飞机.但是,这件事情太不周密了,因为FBI的间谍早已获悉他的具体位置--但这不是最重要的 ...
- 美妙绝伦面向node引用-zico图标(逐浪矢量全真图标)1.9发布
15年前,那个农村小伙初入广告行业被讥笑没有审美 于是他狠下决心,积极研发,缔就技术之核, 再后来,那些PPT和美工er们随便怎么自好,无法让其心怵. 因为他是中华人民共和国唯一具备web.cms.o ...
- Python多版本共存的方法
目录 Python2.Python3共存的方法 python2下载及环境变量配置 第一步.打开Python官网,下载Python2 第二步.python2环境变量配置 测试结果 Python2.Pyt ...
- [loj3525]喷泉公园
先将整张图$x$和$y$都缩小一半,即"道路"长度变为1,"长椅"变为放在格子中心 如果在没有长椅的限制下也无解(直接dfs即可判定),显然原问题也无解 否则 ...
- [gym103055H]Grammy and HearthStone
题目即要求构造一个长为$2n$的序列$a_{i}$,满足$\forall 1\le i\le n$,$i$恰好出现两次,假设分别是$a_{x}=a_{y}=i(x<y)$,即要求$y-x=i$ ...
- [luogu6702]Path
维护每一个点到根路径的异或和(记作$d_{k}$),根据异或自反性,$(x,y)$的异或和即$d_{x}\oplus d_{y}$ 考虑两条路径的lca,选择其中深度较大的点,另一条路径必然在其子树外 ...
- App 端自动化的最佳方案,完全解放双手!
1. 前言 大家好,我是安果! 之前写过一篇文章,文中提出了一种方案,可以实现每天自动给微信群群发新闻早报 如何利用 Python 爬虫实现给微信群发新闻早报?(详细) 但是对于很多人来说,首先编写一 ...
- 毕业设计压力测试——jmeter
------------恢复内容开始------------ JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主 ...
- Notepad++—英文版卡框架翻译
用到了,就积累到这里,不急一时,慢慢沉淀. 一.File 二.Edit 三.Search 四.View视图 Always on top #总在最前 Toggle full screen mode ...