Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich die Prozessliste protokollieren, wenn mehr als n Abfragen vorhanden sind?

pt-stalk ist genau für diesen Zweck konzipiert. Es tastet die Prozessliste jede Sekunde ab (oder zu einem beliebigen Zeitpunkt, den Sie angeben), und sammelt dann, wenn ein Schwellenwert erreicht ist (Threads_running ist die Standardeinstellung und in diesem Fall das, was Sie wollen), eine ganze Reihe von Daten, einschließlich Festplattenaktivität, tcpdumps, mehrere Beispiele der Prozessliste, Serverstatusvariablen, Mutex-/Innodb-Status und vieles mehr.

So starten Sie es:

pt-stalk --daemonize --dest /var/lib/pt-stalk --collect-tcpdump --threshold 50 --cycles 1 --disk-pct-free 20 --retention-time 3 -- --defaults-file=/etc/percona-toolkit/pt-stalk_my.cnf

Der obige Befehl wird Threads_running (--threshold; setzen Sie dies auf Ihren Wert für n ), jede Sekunde (Standardeinstellung --interval). ) und löst eine Datenerfassung aus, wenn Threads_running für 1 aufeinanderfolgendes Sample größer als 50 ist (--cycles ). 3 Tage (--retention-time ) von Samples werden aufbewahrt und das Sammeln wird nicht ausgelöst, wenn weniger als 20 % Ihrer Festplatte frei sind (--disk-pct-free ). Bei jeder Sammlung wird ein tcpdump im pcap-Format ausgeführt (--collect-tcpdump ), die entweder mit herkömmlichen tcpdump-Tools oder einer Reihe anderer Percona-Toolkit-Tools analysiert werden können, einschließlich pt-query-digest und pt-tcp-model . Zwischen den Proben gibt es eine 5-minütige Pause (Standardeinstellung:--sleep). ), um DoS'ing selbst zu verhindern. Der Prozess wird daemonisiert (--daemonize ). Die Parameter nach -- wird an alle mysql/mysqladmin-Befehle weitergegeben, ist also ein guter Ort, um Dinge wie --defaults-file festzulegen wo Sie Ihre Zugangsdaten vor neugierigen Blicken schützen können.