java没有打印mysql日志_如何启用MySQL查询日志?

这篇博客讨论了如何在不重启MySQL服务器的情况下启用查询日志,以解决Java无法打印MySQL日志的问题。建议使用`SET global general_log_file='/tmp/mysql.log'; SET global log_output = 'file'; SET global general_log = on;`命令临时启用日志,并警告长时间开启日志可能影响性能。同时,还提供了在不同操作系统和MySQL版本中启用日志的配置方法。
摘要由CSDN通过智能技术生成

回答(13)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这已经在评论中,但值得回答:没有编辑配置文件:在mysql中,以root身份执行

SET global general_log_file='/tmp/mysql.log';

SET global log_output = 'file';

SET global general_log = on;

不要忘记事后关掉它 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

不完全是问题的答案,因为这个问题已经有了很好的答案 . 这是一个侧面信息 . 启用general_log确实会削弱MySQL的性能 . 我在 生产环境 服务器上意外地离开了 general_log =1 ,并花了几个小时找出性能与其他服务器上的类似设置无法比较的原因 . 然后我发现这解释了启用常规日志的影响 . http://www.fromdual.com/general_query_log_vs_mysql_performance .

故事的要点,不要将 general_log=1 放在 .cnf 文件中 . 而是使用 set global general_log =1 一段短暂的持续时间,只需记录下来,找出你想要找到的东西,然后将其关闭 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我不得不放弃并重新创建一般日志 . 在娱乐过程中,字符集搞砸了,我最终在日志中出现了这个错误:

[ERROR] Incorrect definition of table mysql.general_log: expected the type of column 'user_host' at position 1 to have character set 'utf8' but found character set 'latin1'

因此,如果“检查以确保日志记录已启用”的标准答案对您不起作用,请检查以确保您的字段具有正确的字符集 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

MySQL 5.6版本中存在错误 . 甚至mysqld显示为:

Default options are read from the following files in the given order:

C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.ini c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.cnf

Realy设置按以下顺序读取:

Default options are read from the following files in the given order:

C:\ProgramData\MySQL\MySQL Server 5.6\my.ini C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.ini c:\Program Files (x86)\MySQL\MySQL Server 5.6\my.cnf

检查文件:“C:\ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini”

希望它对某人有所帮助 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

当我想快速优化不同的页面加载时,我使用此方法进行日志记录 . 这是一个小小的提示......

Logging to a TABLE

SET global general_log = 1;

SET global log_output = 'table';

然后,您可以从我的 mysql.general_log 表中进行选择以检索最近的查询 .

然后我可以在mysql.log上做类似于 tail -f 的事情,但有更多的改进......

select * from mysql.general_log

where event_time > (now() - INTERVAL 8 SECOND) and thread_id not in(9 , 628)

and argument <> "SELECT 1" and argument <> ""

and argument <> "SET NAMES 'UTF8'" and argument <> "SHOW STATUS"

and command_type = "Query" and argument <> "SET PROFILING=1"

这样可以很容易地查看我可以尝试并减少的查询 . 我使用8秒间隔来仅获取在最后8秒内执行的查询 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

看看另一个相关问题的答案 . 它显示了如何在不重新启动的情况下启用,禁用和查看实时服务器上的日志 .

以下是摘要:

如果您不想或无法重新启动MySQL服务器,可以在运行的服务器上继续这样操作:

创建日志表(参见answer)

启用数据库的查询日志记录(请注意,字符串'table'应按字面意思放置,不能用任何表名替换 . 谢谢Nicholas Pickering)

SET global general_log = 1;

SET global log_output = 'table';

查看日志

select * from mysql.general_log;

禁用数据库的查询日志记录

SET global general_log = 0;

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我还想启用MySQL日志文件来查看查询,我已通过以下说明解决了这个问题

转到 /etc/mysql/mysql.conf.d

打开mysqld.cnf

并启用以下行

general_log_file = /var/log/mysql/mysql.log

general_log = 1

使用此命令重新启动MySQL /etc/init.d/mysql restart

转到 /var/log/mysql/ 并检查日志

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

在Windows上,您可以直接访问

C:\wamp\bin\mysql\mysql5.1.53\my.ini

在 my.ini 中插入此行

general_log_file = c:/wamp/logs/mysql_query_log.log

my.ini 文件最终看起来像这样

...

...

...

socket = /tmp/mysql.sock

skip-locking

key_buffer = 16M

max_allowed_packet = 1M

table_cache = 64

sort_buffer_size = 512K

net_buffer_length = 8K

read_buffer_size = 256K

read_rnd_buffer_size = 512K

myisam_sort_buffer_size = 8M

basedir=c:/wamp/bin/mysql/mysql5.1.53

log = c:/wamp/logs/mysql_query_log.log #dump query logs in this file

log-error=c:/wamp/logs/mysql.log

datadir=c:/wamp/bin/mysql/mysql5.1.53/data

...

...

...

...

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

for mysql>=5.5 仅适用于慢速查询(1秒及以上)my.cfg

[mysqld]

slow-query-log = 1

slow-query-log-file = /var/log/mysql/mysql-slow.log

long_query_time = 1

log-queries-not-using-indexes

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

您可以使用禁用或启用常规查询日志(记录所有查询)

SET GLOBAL general_log = 1 # (or 0 to disable)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

首先, Remember that this logfile can grow very large on a busy server.

For mysql < 5.1.29:

要启用查询日志,请将其放在 /etc/my.cnf 中 [mysqld] 部分

log = /path/to/query.log #works for mysql < 5.1.29

另外,从MySQL控制台启用它

SET general_log = 1;

For mysql 5.1.29+

对于mysql 5.1.29,不推荐使用 log 选项 . 要指定日志文件并启用日志记录,请在 [mysqld] 部分的my.cnf中使用:

general_log_file = /path/to/query.log

general_log = 1

或者,要从MySQL控制台打开日志记录(还必须以某种方式指定日志文件位置,或找到默认位置):

SET global general_log = 1;

另请注意,还有其他选项可以仅记录慢速查询或不使用索引的查询 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

要在MAC机器中启用查询日志:

打开以下文件:

vi /private/etc/my.cnf

在“mysqld”部分下设置查询日志URL,如下所示:

[mysqld]

general_log_file=/Users/kumanan/Documents/mysql_query.log

很少有机器没有正确记录查询,所以你可以从MySQL控制台启用它

mysql> SET global general_log = 1;

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

在phpMyAdmin 4.0中,您将转到状态>监视器 . 在那里,您可以启用慢查询日志和常规日志,查看实时监视器,选择图形的一部分,查看相关查询并分析它们 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值