当前位置:首页 » 编程语言 » mysql查看sql日志

mysql查看sql日志

发布时间: 2022-06-24 02:58:07

A. 如何实时监控mysql中的SQL语句的执行情况

首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。

pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:

1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;

2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。

而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。

三、使用

接着我们来看下如何使用这个工具。

pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据。

触发条件相关的参数有以下几个:

  • function:

    ∘默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;

    ∘也可以设置为 processlist,代表监控 show processlist 的输出;

  • variable:

    ∘默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;

  • threshold:

    ∘默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;

    ∘监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;

  • cycles:

    ∘默认为 5,表示连续观察到五次满足触发条件时,才触发收集;

  • 连接参数:host、password、port、socket。

  • 其他一些重要参数:

  • iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。

  • run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。

  • sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。

  • interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。

  • dest:监控数据存放路径,默认为 /var/lib/pt-stalk。

  • retention-time :监控数据保留时长,默认 30 天。

  • daemonize:以后台服务运行,默认不开启。

  • log:后台运行日志,默认为 /var/log/pt-stalk.log。

  • collect:触发发生时收集诊断数据,默认开启。

    ∘collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。

    ∘collect-strace:收集跟踪数据,需要 strace 工具。

    ∘collect-tcpmp:收集 tcpmp 数据,需要 tcpmp 工具。

B. 如何查看mysql数据库操作记录日志

有时候我们会不小心对一个大表进行了 update,比如说写错了 where 条件......

此时,如果 kill 掉 update 线程,那回滚 undo log 需要不少时间。如果放置不管,也不知道 update 会持续多久。

那我们能知道 update 的进度么?



实验

我们先创建一个测试数据库:

那我们怎么准确的这个倍数呢?

一种方法是靠经验:update 语句的 where 中会扫描多少行,是否修改主键,是否修改唯一键,以这些条件来估算系数。

另一种方法就是在同样结构的较小的表上试验一下,获取倍数。

这样,我们就能准确估算一个大型 update 的进度了。

C. navicat查看mysql的操作记录

mysql在执行sql的时候会在日志当中记录很多信息,当然包括执行的所有语句。下面以使用navicat for mysql为例,来展示一下如何打开/查看MySQL的SQL记录:
打开navicat for mysql,并连接到数据库,选择一个要操作的数据库。
点击左上角的【工具】,选择历史日志选项,或者直接【ctrl+H】。

D. 怎样查看mysql是否开启日志功能

1、首先确认你日志是否启用了mysql>show variables like 'log_bin'。

2、如果启用了,即ON,那日志文件就在mysql的安装目录的data目录下。

3、怎样知道当前的日志mysql> show master status。

4、看二进制日志文件用mysqlbinlog,shell>mysqlbinlog mail-bin.000001或者shell>mysqlbinlog mail-bin.000001 | tail,Windows 下用类似的。

MySQL的日志操作:

1、首先,登陆mysql后,执行sql语句:show variables like 'log_bin'。

2、#错误日志log-errol开启方式:在my.ini的[mysqld]选项下:添加代码:log-error=E:log-error.txt。

记录内容:主要是记录启动、运行或停止mysqld时出现的致命性问题,都是系统级的错误记录。

E. mysql如何记录查看SQL命令错误日志

mysql> show variables like '%error'; 错误日志文件

F. 怎么打开/查看MySQL的SQL记录

要是想用命令行的话,下面给你一些命令(MySQL)
启动,关闭MySQL
在CMD中输入: net start mysql
在服务管理器中启动,关闭.
MySQL登录
在CMD中输入
mysql –h localhost –u root -p
查看数据库: show databases;
使用数据库: use db_name;
查看表: show tables;
查看表结构: describe table_name;
查看表: show tables;

要是不想用命令就在安装MYSQL的浏览器,直接在里面打开看就好了

G. 请教:如何查看mysql数据定义操作的日志

一.错误日志

错误日志在Mysql数据库中很重要,它记录着mysqld启动和停止,以及服务器在运行过程中发生的任何错误的相关信息。

1.配置信息

--log-error=[file-name]用来指定错误日志存放的位置。

如果没有指定[file-name],默认hostname.err做为文件名,默认存放在DATADIR目录中。

也可以将log-error配置到my.cnf文件中,这样就省去了每次在启动mysqld时都手工指定--log-error.例如:

[mysql@test2]$ vi /etc/my.cnf

# The MySQL server

[mysqld]

....

log-error = /var/lib/mysql/test2_mysqld.err

.....

2.错误信息样板

080313 05:21:55 mysqld started

080313 5:21:55 InnoDB: Started; log sequence number 0 43655

080313 5:21:55 [Note] /usr/local/mysql/bin/mysqld: ready for connections.

Version: '5.0.26-standard-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)

080313 5:24:13 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

080313 5:24:13 InnoDB: Starting shutdown...

080313 5:24:16 InnoDB: Shutdown completed; log sequence number 0 43655

080313 5:24:16 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

080313 05:24:16 mysqld ended

080313 05:24:47 mysqld started

080313 5:24:47 InnoDB: Started; log sequence number 0 43655

080313 5:24:47 [Note] /usr/local/mysql/bin/mysqld: ready for connections.

Version: '5.0.26-standard-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)

080313 5:33:49 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

三.查询日志

查询日志记录了clinet的所有的语句。

Note:由于log日志记录了数据库所有操作,对于访问频繁的系统,此种日志会造成性能影响,建议关闭。

1.配置信息

--log=[file-name]用来指定错误日志存放的位置。

如果没有指定[file-name],默认为主机名(hostname)做为文件名,默认存放在DATADIR目录中。

也可以将log配置到my.cnf文件中,这样就省去了每次在启动mysqld时都手工指定--log.例如:

# The MySQL server

[mysqld]

......

#query-log

log = /var/lib/mysql/query_log.log

......

2.读取查询日志

查询日志是纯文本格可,可以使用OS文本读取工具直接打开查看。例如:

[mysql@test2]$ tail -n 15 query_log.log

080313 7:58:28 17 Query show tables

080313 8:07:45 17 Quit

080313 10:01:48 18 Connect root@localhost on

080313 10:02:38 18 Query SELECT DATABASE()

18 Init DB test

080313 10:02:42 18 Query show tables

080313 10:03:07 18 Query select * from pet

080313 10:06:26 18 Query insert into pet values('hunter','yxyup','cat','f','1996-04-29',null)

080313 10:06:39 18 Query select * from pet

080313 10:07:13 18 Query update pet set sex='m' where name='hunter'

080313 10:07:38 18 Query delete from pet where name='hunter'

080313 10:13:48 18 Query desc test8

080313 10:14:13 18 Query create table t1(id int,name char(10))

080313 10:14:41 18 Query alter table t1 add sex char(2)

[mysql@test2]$

四.慢查询日志

慢查询日志是记录了执行时间超过参数long_query_time(单位是秒)所设定值的SQL语句日志。

Note:慢查询日志对于我们发现性能有问题的SQL有很帮助,建议使用并经常分析

1.配置信息

--log-slow-queries=[file-name]用来指定错误日志存放的位置。

如果没有指定[file-name],默认为hostname-slow.log做为文件名,默认存放在DATADIR目录中。

也可以将log-slow-queries配置到my.cnf文件中,这样就省去了每次在启动mysqld时都手工指定--log-slow-queries.例如:

# The MySQL server

[mysqld]

......

#slow-query-log

log-slow-queries = /var/lib/mysql/slow_query_log.log

......

2.读取慢查询日志

[mysql@test2]$ cat slow_query_log.log

/usr/local/mysql/bin/mysqld, Version: 5.0.26-standard-log. started with:

Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock

Time Id Command Argument

# Time: 080313 5:41:46

# User@Host: root[root] @ localhost []

# Query_time: 108 Lock_time: 0 Rows_sent: 0 Rows_examined: 8738

use test;

select count(1) from t1 a, t1 b,t1 c where a.id=b.id and b.name=c.name;

# Time: 080313 5:52:04

# User@Host: root[root] @ localhost []

# Query_time: 583 Lock_time: 0 Rows_sent: 0 Rows_examined: 508521177

select count(1) from t1 a, t1 b where a.id=b.id;

/usr/local/mysql/bin/mysqld, Version: 5.0.26-standard-log. started with:

Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock

Time Id Command Argument

# Time: 080313 10:39:59

# User@Host: root[root] @ localhost []

# Query_time: 11 Lock_time: 0 Rows_sent: 4537467 Rows_examined: 4537467

use test;

select id from tail;

如果慢查询日志记录很多可以使用mysqlmpslow进行分类汇总

[mysql@test2]$ mysqlmpslow slow_query_log.log

Reading mysql slow query log from slow_query_log.log

Count: 1 Time=583.00s (583s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost

select count(N) from t1 a, t1 b where a.id=b.id

Count: 1 Time=108.00s (108s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost

select count(N) from t1 a, t1 b,t1 c where a.id=b.id and b.name=c.name

Count: 1 Time=11.00s (11s) Lock=0.00s (0s) Rows=4537467.0 (4537467), root[root]@localhost

select id from tail;

mysql有以下几种日志:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update
二进制日志: -log-bin

在mysql的安装目录下,打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了。
例如:
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin=
#Enter a name for the query log file. Otherwise a default name will be used.
#log=
#Enter a name for the error log file. Otherwise a default name will be used.
log-error=
#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=

查看日至:
1. 首先确认你日志是否启用了
mysql>show variables like 'log_bin';
如果启用了,即ON
那日志文件就在mysql的安装目录的data目录下
cat/tail 日志文件名

2. 怎样知道当前的日志
mysql> show master status;
3. 查看从某一段时间到某一段时间的日志

mysqlbinlog --start-datetime='2008-01-19 00:00:00'
--stop-datetime='2008-01-30 00:00:00' /var/log/mysql/mysql-bin.000006
> mysqllog1.log

H. 如何读取mysql日志获取sql

你应该说的MySQL的binlog(二进制日志)吧,她记录的内容是:任何引起或可能引起数据库变化的操作 。
查询方式 :
#查询某一段时间内的日志 start-datetime(开始时间)stop-datetime(结束时间) #mysql-bin.000001日志名称

mysqlbinlog mysql-bin.000001 \
--start-datetime="2015-10-05 17:34:40" \
--stop-datetime="2015-10-05 17:34:56" > sixteensecs.sql
#查看指定位置的日志 ,start-position(开始位置) stop-position(结束位置)
mysqlbinlog --read-from-remote-server -uuser -p \
mysql-bin.000001 -h 192.168.0.182 -P 3306 \
--start-position=932 --stop-position=1132 > remote000001.sql
打开日志内容,可以看到之前操作的SQL脚本(语句:增加,修改,删除)

或者 开启 general_log 日志,打印所有操作SQL脚本(语句),比较消耗性能,线上环境不建议开启,只是线上有问题时临时打开测试,测试完成后再关闭 。

I. 如何查看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 架构图

J. mysql日志文件查询问题。

1 跟踪数据库执行过的所有操作语句,可以通过【通用日志】,又叫查询日志。
启用方式一:my.ini配置文件中[mysqld]组中增加:general_log=on #需重启数据库服务

启用方式二:通过任意mysql客户端工具或在程序中调用:set GLOBAL general_log = on; #即时生效;
这就会在数据库的data目录下产生一个 主机名.log 的日志,里边是一条条的语句;
关闭:set GLOBAL general_log = off; 或 配置 general_log=off

2 通用日志,是数据库提供的日志的一种。其他的日志还有二进制日志、错误日志;

热点内容
算法牛人左 发布:2025-02-05 15:31:02 浏览:438
php筛选功能 发布:2025-02-05 15:29:09 浏览:165
ip匹配服务器 发布:2025-02-05 15:10:35 浏览:909
php语法后 发布:2025-02-05 15:10:34 浏览:59
oppor9s怎么压缩文件 发布:2025-02-05 15:00:34 浏览:639
苹果耳塞怎么改安卓也能用 发布:2025-02-05 14:50:54 浏览:558
安卓如何鉴别手机真假 发布:2025-02-05 14:28:15 浏览:121
ffmpeglinux编译 发布:2025-02-05 14:28:04 浏览:545
服务器如何做界面 发布:2025-02-05 14:27:23 浏览:291
访问学者单位推荐意见 发布:2025-02-05 14:13:05 浏览:853