Sto tentando di abilitare la registrazione delle query lenta sul nostro server al fine di identificare eventuali query che potrebbero utilizzare l'ottimizzazione. Sembra abbastanza semplice, tuttavia il mio file non viene scritto. Non ricevo errori o cose del genere, non sembra che stia registrando le query lente. Mi sono ricordato di riavviare mysql dopo le mie modifiche alla configurazione.
Sto usando MySQL Ver 5.1.61. Ecco cosa ho in my.cnf:
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1
il file /var/logs/my.slow.log ha mysql come proprietario, anche nell'interesse del debug ho dato lettura / scrittura a tutti sul file di registro.
Ho long_query_time impostato su 1 in quanto sopra, voglio solo vedere se funziona. Ho provato a impostarlo su un valore inferiore (ad es. 0.3) ma non riesco ancora a registrare nulla. So che le query in esecuzione sulla mia app impiegano più di 1 secondo e ho anche eseguito intenzionalmente le query di registro ( SELECT sleep(10);
) nel terminale per il test e il registro è ancora vuoto.
Ho esaminato i documenti, da quello che posso vedere dovrebbe funzionare. Qualcuno ha qualche suggerimento su cosa sto facendo di sbagliato? Qualsiasi consiglio sarebbe apprezzato, grazie mille!
Modifica: come richiesto nei commenti ho eseguito la query:
`SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`
Il risultato:
10.0000000
/var/run/mysqld/mysqld-slow.log
OFF
Ovviamente le mie modifiche alla configurazione non vengono prese in considerazione poiché ritengo che si tratti di impostazioni predefinite. Sono abbastanza sicuro che il file my.cnf che sto modificando viene analizzato come se inserissi un valore non valido che mysql genererà un errore al riavvio. Cosa potrebbe succedere qui?
Un'altra modifica:
Dopo aver seguito i consigli di @RolandoMySQLDBA e aver spostato le mie linee di configurazione della query lenta in sotto le [mysqld]
mie impostazioni, sembrano salvare. Ora il risultato della query variabile_valore sopra riportata è:
1.0000000
/var/logs/my.slow.log
ON
Tuttavia, non vedo ancora la scrittura del file my.slow.log. Non penso che si tratti di un problema di autorizzazioni poiché il file è di proprietà di mysql e ho aggiunto tutte le autorizzazioni per tutti gli utenti del file. Qualcuno potrebbe pensare a un motivo per cui questo non funzionerebbe?
Modifica: risolto! Il percorso per il log delle query lente non era corretto, avrebbe dovuto essere /var/log/my.slow.log invece di / var / log * s * / my.slow.log. Grazie a tutti per l'aiuto, ho imparato a assegnare!
SET GLOBAL log_output=FILE
riparato per me.
SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');
e pubblica il suo output.