MySQLを再起動せずにMySQLのスロークエリログを有効にするにはどうすればよいですか?


88

私はここの指示に従いました:http : //crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/しかし、それはしきい値を設定するだけのようです。

ファイルパスの設定など、他に何かする必要がありますか?

MySQLのドキュメントによると

--log-slow-queriesにfile_name値が指定されていない場合、デフォルト名は 
host_name-slow.log。サーバーは、以下の場合を除いて、データディレクトリにファイルを作成します。
絶対パス名を指定して、別のディレクトリを指定します。 

ランニング

変数を表示

ログファイルのパスが表示されず、サーバー上でクエリの遅いログファイルが表示されません...

編集

サーバーバージョン5.0.77を使用しているようです。

SET GLOBAL log_slow_queries = 1;

しかし私は得る:エラー1238(HY000):変数 'log_slow_queries'は読み取り専用変数です

サーバーを再起動する必要があり、私の設定にlog_slow_queriesを設定する必要があると思いますか?


5
開発ボックスでテストしてみませんか?
マーティン

回答:


92

試してみてSET GLOBAL slow_query_log = 'ON';、おそらくFLUSH LOGS;

これは、MySQL 5.1以降を使用していることを前提としています。以前のバージョンを使用している場合は、サーバーを再起動する必要があります。これはMySQLマニュアルに記載されています。ログは、構成ファイルまたはコマンドラインで構成できます。


8
FLUSH SLOW LOGSは5.5で利用可能です!
Carson Reinke、2013年

10.0.36-MariaDBでも動作しました。SET GLOBAL slow_query_log = 'OFF';同様に期待どおりに動作します。FLUSH LOGSどちらの場合も必要ありませんでした。
rinogo 2018

28

バージョン<5.1での遅いクエリの場合、次の構成でうまくいきました。

log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=20
log_queries_not_using_indexes=YES

また[mysqld]、設定ファイルの一部の下に配置して再起動することにも注意してくださいmysqld


2
log-slow-queriesではなくlog_slow_queriesです
naomi

6
プラスあなたが前に手動でログファイルを作成する必要がありますsudo mkdir /var/log/mysql sudo touch /var/log/mysql/slow-query.log sudo chown -R _mysql /var/log/mysql/
チャールズ

1
log_slow_queriesはMySQL 5.1.29で非推奨になりましたslow-query-log。詳細については、MySQL 5.1リファレンスマニュアルをご覧ください。
Xeoncross 2017

18

ログが有効かどうかを確認しますか?

SHOW VARIABLES LIKE '%log%';

ログを設定します。

SET GLOBAL general_log = 'ON'; 

SET GLOBAL slow_query_log = 'ON'; 

7

MySQLマニュアル-slow-query-log-file

これは、次のコマンドを実行してスローログファイル(5.1.6以降)を設定できると主張しています。

set global slow_query_log_file = 'path';

変数slow_query_logは、それが有効かどうかを制御するだけです。


6

これらの仕事

SET GLOBAL LOG_SLOW_TIME = 1;
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;

設定5.1.42で壊れた

SET GLOBAL LOG_SLOW_QUERIES = ON;
SET GLOBAL SLOW_QUERY_LOG = ON;
set @@global.log_slow_queries=1;

http://bugs.mysql.com/bug.php?id=32565

これを行うための最良の方法は、log_slow_timeを非常に高く設定して、低速のクエリログを「オフ」にすることです。log_slow_timeを下げて有効にします。log_queries_not_using_indexesにも同じトリック(OFFに設定)を使用します。


5

問題は、MySQLサーバーにファイルへの権限があり、ファイルを編集できることを確認していることだと思います。

ファイルにアクセスできるようになっている場合は、次の設定を試すことができます。
SET GLOBAL slow_query_log = 1;

そうでない場合は、構成ファイルを変更した後、いつでもサーバーを「再ロード」できます。Linuxでは通常/etc/init.d/mysql reload


表示されるエラー:エラー1193(HY000):不明なシステム変数 'slow_query_log'
mmattax

MySQLのどのバージョンを実行していますか?
Ian Gregory

3

ファイルではなくテーブルで一般エラーログとスロークエリエラーログを有効にする場合

ファイルではなくテーブルへのログインを開始するには:

set global log_output = TABLE”;

一般的で遅いクエリログを有効にするには:

set global general_log = 1;
set global slow_query_log = 1;

ログを表示するには:

select * from mysql.slow_log;
select * from mysql.general_log;

詳細については、このリンクにアクセスしてください

http://easysolutionweb.com/technology/mysql-server-logs/


1

これはmysql> 5.5で動作するはずです

'%long%'のような変数を表示します。

SET GLOBAL long_query_time = 1;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.