Recherche…


Une liste

  • Journal général - toutes les requêtes - voir VARIABLE general_log
  • Journal lent - requêtes plus longues que long_query_time - slow_query_log_file
  • Binlog - pour la réplication et la sauvegarde - log_bin_basename
  • Journal de relais - également pour la réplication
  • erreurs générales - mysqld.err
  • start / stop - mysql.log (pas très intéressant) - log_error
  • InnoDB redo log - iblog *

Voir les variables basedir et datadir pour l'emplacement par défaut de nombreux journaux

Certains journaux sont activés / désactivés par d'autres variables. Certains sont soit écrits dans un fichier, soit dans une table.

(Note aux réviseurs: cela nécessite plus de détails et plus d'explications.)

Documenteurs : veuillez inclure l'emplacement et le nom par défaut pour chaque type de journal, à la fois pour Windows et * nix. (Ou au moins autant que possible.)

Journal de requête lent

Le journal de requêtes lent se compose d'événements de journal pour les requêtes prenant jusqu'à long_query_time secondes pour terminer. Par exemple, jusqu'à 10 secondes pour terminer. Pour voir le seuil de temps actuellement défini, émettez le message suivant:

SELECT @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
|         10.000000 |
+-------------------+

Il peut être défini en tant que variable GLOBAL, dans le fichier my.cnf ou my.ini . Ou il peut être défini par la connexion, bien que cela soit inhabituel. La valeur peut être réglée entre 0 et 10 (secondes). Quelle valeur utiliser?

  • 10 est si haut qu'il est presque inutile;
  • 2 est un compromis;
  • 0,5 et d'autres fractions sont possibles;
  • 0 capture tout; Cela pourrait remplir le disque dangereusement vite, mais peut être très utile.

La capture des requêtes lentes est activée ou désactivée. Et le fichier connecté est également spécifié. Le ci-dessous capture ces concepts:

SELECT @@slow_query_log; -- Is capture currently active? (1=On, 0=Off)
SELECT @@slow_query_log_file; -- filename for capture. Resides in datadir
SELECT @@datadir; -- to see current value of the location for capture file

SET GLOBAL slow_query_log=0; -- Turn Off
-- make a backup of the Slow Query Log capture file. Then delete it.
SET GLOBAL slow_query_log=1; -- Turn it back On (new empty file is created)

Pour plus d' informations, s'il vous plaît voir la page de manuel MySQL Le log des requêtes lentes

Remarque: Les informations ci-dessus sur l'activation / désactivation du slowlog ont été modifiées dans 5.6 (?); l'ancienne version avait un autre mécanisme.

La "meilleure" façon de voir ce qui ralentit votre système:

long_query_time=...
turn on the slowlog
run for a few hours
turn off the slowlog (or raise the cutoff)
run pt-query-digest to find the 'worst' couple of queries.  Or mysqldumpslow -s t

Journal de requête général

Le journal de requête général contient une liste d'informations générales provenant des connexions client, des déconnexions et des requêtes. Il est inestimable pour le débogage, mais il constitue un obstacle à la performance (citation?).

Un exemple de vue d'un journal de requête général est présenté ci-dessous:

entrer la description de l'image ici

Pour déterminer si le journal général est en cours de capture:

SELECT @@general_log; -- 1 = Capture is active; 0 = It is not.

Pour déterminer le nom du fichier de capture:

SELECT @@general_log_file; -- Full path to capture file

Si le chemin d'accès complet au fichier n'est pas affiché, le fichier existe dans le datadir .

Exemple Windows:

+----------------------------------------------------------+
| @@general_log_file                                       |
+----------------------------------------------------------+
| C:\ProgramData\MySQL\MySQL Server 5.7\Data\GuySmiley.log |
+----------------------------------------------------------+

Linux:

+-----------------------------------+
| @@general_log_file                |
+-----------------------------------+
| /var/lib/mysql/ip-ww-xx-yy-zz.log |
+-----------------------------------+

Lorsque des modifications sont apportées à la variable GLOBAL general_log_file , le nouveau journal est enregistré dans le datadir . Cependant, le chemin complet ne peut plus être reflété en examinant la variable.

Dans le cas où aucune entrée pour general_log_file ne general_log_file dans le fichier de configuration, la valeur par défaut est @@hostname .log dans le datadir .

Les meilleures pratiques consistent à désactiver la capture. Enregistrez le fichier journal dans un répertoire de sauvegarde avec un nom de fichier reflétant l'heure de début / fin de la capture. La suppression du fichier précédent si un déplacement du système de fichiers n'a pas eu lieu. Établissez un nouveau nom de fichier pour le fichier journal et activez la capture (tous affichés ci-dessous). Les meilleures pratiques incluent également une détermination minutieuse si vous souhaitez même capturer pour le moment. En règle générale, la capture est activée à des fins de débogage uniquement.

Un nom de fichier typique d'un système de fichiers pour un journal sauvegardé peut être:

/LogBackup/GeneralLog_20160802_1520_to_20160802_1815.log

où la date et l'heure font partie du nom de fichier sous forme de plage.

Pour Windows, notez la séquence suivante avec les modifications de réglage.

SELECT @@general_log; -- 0. Not being captured
SELECT @@general_log_file; -- C:\ProgramData\MySQL\MySQL Server 5.6\Data\GuySmiley.log
SELECT @@datadir; -- C:\ProgramData\MySQL\MySQL Server 5.7\Data\
SET GLOBAL general_log_file='GeneralLogBegin_20160803_1420.log'; -- datetime clue
SET GLOBAL general_log=1; -- Turns on actual log capture. File is created under `datadir`
SET GLOBAL general_log=0; -- Turn logging off

Linux est similaire. Celles-ci représenteraient des changements dynamiques. Tout redémarrage du serveur prendrait les paramètres du fichier de configuration.

En ce qui concerne le fichier de configuration, tenez compte des paramètres de variable pertinents suivants:

[mysqld]
general_log_file = /path/to/currentquery.log
general_log      = 1

De plus, la variable log_output peut être configurée pour la sortie TABLE , pas seulement FILE . Pour cela, veuillez consulter Destinations .

Veuillez consulter la page du manuel MySQL Le journal des requêtes générales .

Journal des erreurs

Le journal des erreurs contient les informations de démarrage et d'arrêt et les événements critiques rencontrés par le serveur.

Voici un exemple de son contenu:

entrer la description de l'image ici

La variable log_error contient le chemin d'accès au fichier journal pour la journalisation des erreurs.

En l'absence d'une entrée de fichier de configuration pour log_error , le système log_error ses valeurs par défaut pour @@hostname .err dans le datadir . Notez que log_error n'est pas une variable dynamique. En tant que tel, les modifications sont effectuées via des modifications de fichier CNF ou INI et un redémarrage du serveur (ou en affichant "Rinçage et modification du nom du fichier journal des erreurs" dans le lien Page de manuel en bas).

La journalisation ne peut pas être désactivée pour des erreurs. Ils sont importants pour la santé du système lors de la résolution des problèmes. En outre, les entrées sont peu fréquentes par rapport au journal de requête général.

La variable GLOBAL log_warnings définit le niveau de verbosité qui varie selon la version du serveur. L'extrait suivant illustre:

SELECT @@log_warnings; -- make a note of your prior setting
SET GLOBAL log_warnings=2; -- setting above 1 increases output (see server version)

log_warnings comme vu ci-dessus est une variable dynamique.

Les modifications apportées au fichier de configuration dans les fichiers cnf et ini peuvent ressembler à ceci.

[mysqld]
log_error        = /path/to/CurrentError.log
log_warnings     = 2

MySQL 5.7.2 a étendu la verbosité du niveau d’avertissement à 3 et a ajouté la valeur GLOBAL log_error_verbosity . Encore une fois, il a été introduit dans 5.7.2. Il peut être défini dynamiquement et vérifié en tant que variable ou défini via les paramètres du fichier de configuration cnf ou ini .

À partir de MySQL 5.7.2:

[mysqld]
log_error           = /path/to/CurrentError.log
log_warnings        = 2
log_error_verbosity = 3 

S'il vous plaît voir le manuel MySQL page intitulée Le journal d'erreur en particulier pour Flushing et en renommant le fichier journal d'erreur, et son erreur section Journal verbosité avec les versions liées à log_warnings et error_log_verbosity .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow