activer le journal des requêtes pour une base de données unique

8

J'ai de nombreux schémas de base de données sur le serveur mysql 5.6, maintenant le problème ici est que je veux intercepter les requêtes pour un seul schéma.

Je ne peux pas activer le journal des requêtes pour tout le serveur car l'un de mes schémas est très chargé et cela aura un impact sur le serveur.

Est-ce leur façon, n'importe quel outil grâce auquel je ne pouvais enregistrer les requêtes que par schéma unique.

J'ai trouvé un graphique d'analyse comparative qui montre l'impact sur les transactions / seconde lorsque le journal des requêtes est activé.

entrez la description de l'image ici entrez la description de l'image ici

Suyash Jain
la source
Pouvez-vous plutôt utiliser le journal des requêtes lentes? Et puis analyser ce journal avec pt-query-digest? Sinon, vous pouvez essayer la sortie tcpdump analysée par pt-query-digest
jerichorivera

Réponses:

1

Question intéressante et +1. Cela m'a intéressé car je peux voir plusieurs cas d'utilisation pour cette fonctionnalité.

Malheureusement, pour votre cas où vous ne pouvez pas activer la journalisation générale, il existe une seule solution de contournement, plutôt inadéquate.

Cela revient à utiliser la variable SQL_LOG_OFF pour désactiver la journalisation pour une connexion donnée. Une solution idéale aurait été d'avoir une variable "SQL_LOG_ON" comme on peut le faire dans Oracle (équivalent) - peut-être pourriez-vous essayer de désactiver la déconnexion pour tout sauf la ou les connexions qui vous intéressent?

En outre, et malheureusement, cela requiert le SUPERprivilège. Encore une fois, cela peut ne pas être possible (même probablement) dans votre cas.

Selon la gravité de votre problème, les heures de travail et la charge du serveur à des moments donnés, vous pourrez peut-être trouver une utilisation du pt-query-digest de Percona qui peut aider à l'analyse des journaux. Petit confort, mais comme d'habitude PostgreSQL est en avance sur MySQL ( 1 , 2 ).

Si vous souhaitez déposer une demande de fonctionnalité, je serais heureux de faire un "moi-aussi" si vous postez le lien ici.

Vérace
la source
1

Si vous êtes si près de vous arrêter que vous ne pouvez pas activer le journal général sur FILE, vous avez des problèmes plus graves; ils ont besoin d'être réparés.

Je soupçonne, sans aucune connaissance réelle, que le slowlog aurait un impact similaire, surtout avec long_query_time = 0.

5.7 a une fonction de "réécriture de requête". Une astuce pourrait y être utilisée. (Mais, encore une fois, il y a des frais généraux, qui devraient être comparés.)

Combien de temps voulez-vous intercepter les requêtes? Cherchez-vous juste la source d'une action coquine? Ou essayez-vous de rassembler des requêtes pour créer une référence réaliste pour cette table? Ou autre chose?

La réplication est-elle activée? Êtes-vous intéressé par les lectures? Ou écrit? Ou les deux?

Combien de threads sont actifs simultanément? L'indice de référence que vous avez montré indique que pour 1, le journal a une faible surcharge. C'est le verrou de table sur MyISAM ou CSV qui tue le traitement pour une concurrence élevée.

Votre deuxième graphique indique que les clients devraient vraiment être limités à environ 5-8 connexions simultanées - sinon le débit diminue en fait! Quels étaient max_connectionset Max_used_connectionspour ce graphique?

Rick James
la source
Salut, je veux capturer les requêtes pendant environ 2 jours et ces graphiques ne sont pas liés à mon analyse comparative ... Je les ai collés uniquement pour la connaissance.L'application pour laquelle je souhaite que les requêtes soit un consommateur faible en ressources. Tcpdump ne fournira pas les statistiques de chronométrage.
Suyash Jain