是否有任何查询/方法显示在所有服务器上执行的最后查询?
当前回答
读完保罗的回答后,我继续在https://dev.mysql.com/doc/refman/5.7/en/query-log.html上挖掘更多信息
我发现了一个非常有用的代码。这里是上下文的摘要。
(注:以下代码不是我的)
这个脚本是一个保持表整洁的示例,这将帮助您减少表的大小。一天之后,将会有大约180k的日志查询。(在一个文件中,每天是30MB)
你需要添加一个额外的列(event_unix),然后你可以使用这个脚本来保持日志干净…它会将时间戳更新为unix时间戳,删除超过1天的日志,然后将event_time从event_unix更新为timestamp…听起来有点混乱,但效果很好。
新列的命令:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
ALTER TABLE `general_log_temp`
ADD COLUMN `event_unix` int(10) NOT NULL AFTER `event_time`;
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
清理脚本:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
UPDATE general_log_temp SET event_unix = UNIX_TIMESTAMP(event_time);
DELETE FROM `general_log_temp` WHERE `event_unix` < UNIX_TIMESTAMP(NOW()) - 86400;
UPDATE general_log_temp SET event_time = FROM_UNIXTIME(event_unix);
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
这要归功于Sebastian Kaiser(代码的原始作者)。
希望有人会像我一样觉得它有用。
其他回答
也许您可以通过查看查询日志来找到这一点。
如果开启了mysql binlog,可以通过执行命令查看用户执行的命令 以下命令在Linux控制台通过浏览到mysql binlog目录
mysqlbinlog binlog.000001 > /tmp/statements.sql
启用
[mysqld]
log = /var/log/mysql/mysql.log
或者一般的日志会对mysql的性能有影响
读完保罗的回答后,我继续在https://dev.mysql.com/doc/refman/5.7/en/query-log.html上挖掘更多信息
我发现了一个非常有用的代码。这里是上下文的摘要。
(注:以下代码不是我的)
这个脚本是一个保持表整洁的示例,这将帮助您减少表的大小。一天之后,将会有大约180k的日志查询。(在一个文件中,每天是30MB)
你需要添加一个额外的列(event_unix),然后你可以使用这个脚本来保持日志干净…它会将时间戳更新为unix时间戳,删除超过1天的日志,然后将event_time从event_unix更新为timestamp…听起来有点混乱,但效果很好。
新列的命令:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
ALTER TABLE `general_log_temp`
ADD COLUMN `event_unix` int(10) NOT NULL AFTER `event_time`;
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
清理脚本:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
UPDATE general_log_temp SET event_unix = UNIX_TIMESTAMP(event_time);
DELETE FROM `general_log_temp` WHERE `event_unix` < UNIX_TIMESTAMP(NOW()) - 86400;
UPDATE general_log_temp SET event_time = FROM_UNIXTIME(event_unix);
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
这要归功于Sebastian Kaiser(代码的原始作者)。
希望有人会像我一样觉得它有用。
您可以在linux中查看以下内容
cd /root
ls -al
vi .mysql_history可能有帮助
您可以为这种诊断启用一般查询日志。但是,通常不会在生产服务器上记录所有SELECT查询,这是性能杀手。
编辑你的MySQL配置,例如/etc/mysql/my.cnf -查找或添加如下一行
[mysqld]
log = /var/log/mysql/mysql.log
重新启动mysql以获取该更改,现在就可以了
tail -f /var/log/mysql/mysql.log
嘿,马上,你就可以看到输入的查询了。
推荐文章
- 警告用户/local/mysql/data目录不属于mysql用户
- 添加一个复合主键
- 如何在SQL Server Management Studio中查看查询历史
- 无法添加或更新子行:外键约束失败
- 如何从本地机器mysqldump远程数据库
- 如何正确地创建复合主键- MYSQL
- Python中带有回溯的日志异常
- 仅在Datetime列上按日期分组
- 在MySQL数据库中存储货币值的最佳数据类型
- 如何自定义'显示进程列表'在mysql?
- MySQL删除一些外键
- 用MySQL LEFT JOIN删除行
- MySQL - length() vs char_length()
- 使用PDO进行行计数
- 在Mac上安装MySQL后,使用ALTER USER语句重置MySQL root密码