查看mysql数据库日志 如何查看mysql运行,访问记录等日志
本篇文章给大家谈谈查看mysql数据库日志,以及如何查看mysql运行,访问记录等日志对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
如何查看mysql运行,访问记录等日志
mysql有以下几种日志:
错误日志:-log-err
查询日志:-log
慢查询日志:-log-slow-queries
更新日志:-log-update
二进制日志:-log-bin
是否启用了日志
mysql>showvariableslike'log_%';
怎样知道当前的日志
mysql>showmasterstatus;
显示二进制日志数目
mysql>showmasterlogs;
看二进制日志文件用mysqlbinlog
shell>mysqlbinlogmail-bin.000001
或者
shell>mysqlbinlogmail-bin.000001|tail
在配置文件中指定log的输出位置.
Windows:Windows的配置文件为 my.ini,一般在MySQL的安装目录下或者 c:\Windows下。
Linux:Linux的配置文件为 my.cnf,一般在/etc下。
windows下
#在[mysqld]中输入
#log
log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"
log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
long_query_time=2
log-slow-queries="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"
Linux下
#在[mysqld]中输入
#log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries=/usr/local/mysql/log/slowquery.log
如何查看mysql数据库操作记录日志
有时候我们会不小心对一个大表进行了 update,比如说写错了 where条件......
此时,如果 kill掉 update线程,那回滚 undo log需要不少时间。如果放置不管,也不知道 update会持续多久。
那我们能知道 update的进度么?
实验
我们先创建一个测试数据库:
快速创建一些数据:
连续执行同样的 SQL数次,就可以快速构造千万级别的数据:
查看一下总的行数:
我们来释放一个大的 update:
然后另起一个 session,观察 performance_schema中的信息:
可以看到,performance_schema会列出当前 SQL从引擎获取的行数。
等 SQL结束后,我们看一下 update从引擎总共获取了多少行:
可以看到该 update从引擎总共获取的行数是表大小的两倍,那我们可以估算:update的进度=(rows_examined)/(2*表行数)
💡小贴士
information_schema.tables中,提供了对表行数的估算,比起使用 select count(1)的成本低很多,几乎可以忽略不计。
那么是不是所有的 update,从引擎中获取的行数都会是表大小的两倍呢?这个还是要分情况讨论的,上面的 SQL更新了主键,如果只更新内容而不更新主键呢?我们来试验一下:
等待 update结束,查看 row_examined,发现其刚好是表大小:
那我们怎么准确的这个倍数呢?
一种方法是靠经验:update语句的 where中会扫描多少行,是否修改主键,是否修改唯一键,以这些条件来估算系数。
另一种方法就是在同样结构的较小的表上试验一下,获取倍数。
这样,我们就能准确估算一个大型 update的进度了。
如何查看mysql的日志文件
首先,介绍一下mysql日志的种类。一般来说,日志有五种,分别为:
(推荐学习:mysql教程)
错误日志:-log-err(记录启动,运行,停止mysql时出现的信息)
二进制日志:-log-bin(记录所有更改数据的语句,还用于复制,恢复数据库用)
查询日志:-log(记录建立的客户端连接和执行的语句)
慢查询日志:-log-slow-queries(记录所有执行超过long_query_time秒的所有查询)
更新日志:-log-update(二进制日志已经代替了老的更新日志,更新日志在MySQL 5.1中不再使用)
查看日志的方法:
1、打开cmd
输入 mysql-u root-p,然后输入密码,进入数据库
2、查询当前日志记录的状况
mysql>show variables like'log%';(是否启用了日志)
mysql> show master status;(怎样知道当前的日志)
mysql> show master logs;(显示二进制日志的数目)
3、查看日志功能状态
从上图可以看到value值为off状态,说明没有开启日志功能。
开启方法:
按win+r快捷键,输入 services.msc,回车,打开服务,找到mysql服务。查看可执行文件的位置。
4、配置my.ini文件
关闭mysql服务
mysql>net stop mysql打开my.ini配置文件,添加变量,保存。
log=E:/mysql_log.txt
然后启动mysql服务
mysql>net start mysql5、查看日志
日志文件内容如下:
MySQL的查询日志记录了所有MySQL数据库请求的信息,无论这些请求是否得到了正确的执行。
默认情况下,MySQL查询日志是关闭的。生产环境,如果开启MySQL查询日志,对性能还是有蛮大的影响的。
另外很多时候,MySQL慢查询日志基本可以定位那些出现性能问题的SQL,它跟SQL Server中的profiler有点类似,但是这个不能跟踪某个会话、用户、客户端,它只能对整个数据库进行跟踪。
如何查看mysql数据库的日志文件
这是一个慢查询日志的展示工具,能够帮助 DBA或者开发人员分析数据库的性能问题,给出全面的数据摆脱直接查看 slow-log。QAN(Query Analytics)
PMM目前有 2个版本,但是对于 QAN来说其大致由三部分组成:
QAN-Agent(client):负责采集 slow-log的数据并上报到服务端
QAN-API(server):负责存储采集的数据,并对外提供查询接口
QAN-APP:专门用来展示慢查询数据的 grafana第三方插件
1.数据流转
slow-log-->QAN-Agent-->QAN-API QAN-APP(grafana)
2. pmm1架构图
3. pmm2架构图
查看mysql数据库日志和如何查看mysql运行,访问记录等日志的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!