Forum Linux.général reduire un fichier

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
12
mai
2016

Bonjour,

je viens de ne rendre compte que j'ai un fichier log qui pese 12Go !!
-rw-r--r-- 1 mysql mysql 13861294240 2016-05-12 12:10 mysql-slow.log

Du coup je voudrais le réduire en conservant les dernières lignes.

J'ai pensé
tail -n 1000 mysql-slow.log > mysql-slow.log

mais ca ne passe pas?

  • # Normal

    Posté par  (site web personnel) . Évalué à 4.

    Ça, c'est normal, tu es en train d'essayer de lire et d'écrire un même fichier en même temps, ce qui ne peut que donner un résultat imprévisible.

    Pour faire ce genre de chose, il y a l'outil sponge des moreutils.

    • [^] # Re: Normal

      Posté par  . Évalué à 3.

      sinon je pensais à le faire en 2step
      tail -n 10000 mysql-slow.log > mysql-slow_reduc.log && mv mysql-slow_reduc.log mysql-slow.log

  • # prendre le probleme dans le bon sens

    Posté par  . Évalué à 2.

    je viens de ne rendre compte que j'ai un fichier log qui pese 12Go !!
    -rw-r--r-- 1 mysql mysql 13861294240 2016-05-12 12:10 mysql-slow.log

    Du coup je voudrais le réduire en conservant les dernières lignes.

    ne devrais-tu pas parler à ton DBA pour voir quelles sont les requetes qui sont lentes et qui remplissent le log ?
    car visiblement il se remplit encore puisque la date est celle du jour…

    1°) tu reduiras drastiquement la taille du fichier
    2°) tu amelioreras la vitesse d'execution des requetes qui justement sont "slow"

  • # les bons indicateurs ne doivent pas être trop gros

    Posté par  . Évalué à 2.

    Enfin, c'est ce qu'on m'a dis un jour en cours de gestion de je ne sais plus quoi.
    En tout cas, un truc du genre.

    L'idée, c'était que pour surveiller des process (d'entreprise, pour le cours) il fallait des indicateurs, mais que trop d'indicateurs fait que personne ne les consulte, ou qu'ils sont mal interprétés.
    Bien que j'aie détesté ces cours, pour diverses raisons, l'idée est très pertinente, et au final, l'accent était pas mal mis sur l'idée qu'une entreprise/un service, ce ne sont que des process avec des flux de données.
    Exactement pour un logiciel (pour moi qui suis dev) ou pour un serveur (pour toi qui est admin).
    Bref, si ton fichier de log est trop gros, regarde si:

    1: tu ne log pas trop, ce qui rend le log inutile car jamais lu, ou pas interprété correctement
    2: le problème ne viens pas du processus qui émets l'indicateur?

    Et une fois que tu auras traité l'alerte (fichier trop gros), tu pourras peut-être l'archiver ou le supprimer, quitte à le faire sur une base automatique. Il me semble que logrotate est fait pour ça.

  • # logrotate

    Posté par  . Évalué à 2.

    Comme dit plus haut, il faut que le fichier serve à quelque chose. Vu le nom du fichier, il doit s'agir d'un journal des requêtes lentes.

    • si tu ne t'en sers jamais, désactive le log des slow queries dans MySQL
    • si le fichier se remplit vite, il faut regarder pourquoi il y a des requêtes lentes (ou si le long_query_time est configuré trop bas)
    • s'il a grossi avec le temps, tu peux ajouter une règle logrotate pour le faire tourner (il faudra ajouter un postrotate 'mysqladmin reload' pour que MySQL écrive dans le nouveau fichier après rotation).
  • # tout à fait

    Posté par  . Évalué à 0.

    @neox @freem @kma

    Je vous remencie et je suis d'accord avec vous aucune raison de collecté autant de data.

    Le souci est que je l'ai mis en place, avec un temps trop bas et sans logorate.
    J' ai été pris par des urgences. puis ca met sortie de la tete

  • # question

    Posté par  . Évalué à 1.

    voici ma config

    slow_query_log=1
    slow_query_log_file=/var/log/mysql/mysql-slow.log
    long_query_time = 20
    log-queries-not-using-indexes

    soit un temps minimal pour enregistrer la requete de 20s?

    hors mysqlslow me retourne
    Count: 1 Time=0.06s (0s) Lock=0.02s (0s) Rows_sent=0.0 (0), Rows_examined=710.0 (710), Rows_affected=0.1 (0),
    ou
    Count: 5 Time=0.00s (0s) Lock=0.00s (0s) Rows_sent=1.0 (5), Rows_examined=220.4 (1102), Rows_affected=0.0 (0),

    ont est pas à 20S???

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.