MySQL'i yeniden başlatmadan MySQL'in yavaş sorgu günlüğünü nasıl etkinleştirebilirim?


88

Buradaki talimatları izledim: http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/ ama bu sadece eşiği ayarlıyor gibi görünüyor.

Dosya yolunu ayarlamak gibi başka bir şey yapmam gerekir mi?

MySQL belgelerine göre

--Log-slow-queries için dosya_adı değeri verilmemişse, varsayılan ad 
host_name-slow.log. Sunucu, dosyayı veri dizininde oluşturur.
farklı bir dizini belirtmek için mutlak bir yol adı verilir. 

Koşu

DEĞİŞKENLERİ GÖSTER

herhangi bir günlük dosyası yolunu göstermiyor ve sunucumda herhangi bir yavaş sorgu günlük dosyası görmüyorum ...

DÜZENLE

Görünüşe göre 5.0.77 sunucu sürümünü kullanıyorum, bu yüzden yapmam gerekiyordu:

KÜRESEL log_slow_queries = 1 AYARLA;

ancak şunu alıyorum: ERROR 1238 (HY000): 'log_slow_queries' değişkeni salt okunur bir değişkendir

Sunucuyu yeniden başlatmam ve yapılandırmamda log_slow_queries ayarlamam gerekeceğini varsayıyorum?


5
Neden bunu bir geliştirme kutusunda test etmiyorsun?
Martin

Yanıtlar:


93

Deneyin SET GLOBAL slow_query_log = 'ON';ve belkiFLUSH LOGS;

Bu, MySQL 5.1 veya üzerini kullandığınızı varsayar. Daha önceki bir sürümü kullanıyorsanız, sunucuyu yeniden başlatmanız gerekir. Bu, MySQL Kılavuzunda belgelenmiştir . Günlüğü yapılandırma dosyasında veya komut satırında yapılandırabilirsiniz.


8
FLUSH SLOW LOGS 5.5 sürümünde mevcuttur!
Carson Reinke

Ayrıca 10.0.36-MariaDB'de benim için çalıştı. SET GLOBAL slow_query_log = 'OFF';beklendiği gibi çalışıyor. FLUSH LOGSher iki durumda da gerekli değildi.
rinogo

27

Sürüm <5.1 üzerindeki yavaş sorgular için aşağıdaki yapılandırma benim için çalıştı:

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

Ayrıca [mysqld], yapılandırma dosyasının bir kısmının altına yerleştirip yeniden başlatmayı unutmayın mysqld.


2
Log-slow-queries yerine log_slow_queries
naomi

6
Ayrıca, günlük dosyasını aşağıdakilerden önce manuel olarak oluşturmanız gerekir:sudo mkdir /var/log/mysql sudo touch /var/log/mysql/slow-query.log sudo chown -R _mysql /var/log/mysql/
Charles

1
log_slow_queriesMySQL 5.1.29'da slow-query-log. MySQL 5.1 Referans Kılavuzu daha fazla ayrıntı vardır.
Xeoncross

18

Günlüğü etkin mi bulmadınız mı?

SHOW VARIABLES LIKE '%log%';

Günlükleri ayarlayın: -

SET GLOBAL general_log = 'ON'; 

SET GLOBAL slow_query_log = 'ON'; 

7

MySQL Kılavuzu - yavaş sorgu günlük dosyası

Bu, yavaş günlük dosyasını (5.1.6'dan itibaren) ayarlamak için aşağıdakileri çalıştırabileceğinizi iddia eder:

set global slow_query_log_file = 'path';

Slow_query_log değişkeni sadece etkin olup olmadığını kontrol eder.


6

Bu iş

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

5.1.42 kurulumumda bozuk

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

Görünüşe göre bunu yapmanın en iyi yolu log_slow_time değerini çok yükseğe ayarlamak ve böylece yavaş sorgu günlüğünü "kapatmak". Etkinleştirmek için log_slow_time değerini düşürün. Log_queries_not_using_indexes için aynı numarayı kullanın (KAPALI olarak ayarlayın).


5

Sanırım sorun, MySQL sunucusunun dosya haklarına sahip olduğundan ve dosyayı düzenleyebildiğinden emin olmaktır.

Dosyaya erişim sağlayabiliyorsanız, şunları ayarlamayı deneyebilirsiniz:
SET GLOBAL slow_query_log = 1;

Değilse, yapılandırma dosyasını değiştirdikten sonra her zaman sunucuyu 'yeniden yükleyebilirsiniz'. Linux'ta genellikle/etc/init.d/mysql reload


Anlıyorum: HATA 1193 (HY000): Bilinmeyen sistem değişkeni 'slow_query_log'
mmattax

MySQL'in hangi sürümünü çalıştırıyorsunuz?
Ian Gregory

3

Dosya yerine tabloda genel hata günlüklerini ve yavaş sorgu hata günlüğünü etkinleştirmek istiyorsanız

Dosya yerine tabloda oturum açmaya başlamak için:

set global log_output = “TABLE”;

Genel ve yavaş sorgu günlüğünü etkinleştirmek için:

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

Günlükleri görüntülemek için:

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

Daha fazla ayrıntı için bu bağlantıyı ziyaret edin

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


1

Bu mysql> 5.5 üzerinde çalışmalıdır

'% Long%' GİBİ DEĞİŞKENLERİ GÖSTER;

KÜRESEL long_query_time = 1 AYARLA;

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.