Man kann entweder ein Logfile für alle Queries setzen (mysqld --log=log_file_name
bzw. log = log_file_name
in der my.cnf) oder die Abfragen in die Tabelle mysql.general_log protokollieren lassen.
Die Verwendung der Tabelle kann zum einen ohne Neustart des mysqld erfolgen, zum anderen lassen sich die dort gespeicherten Werte wesentlich leichter filtern.
Die Tabelle lässt sich (falls nicht schon vorhanden) wie folgt anlegen:
CREATE TABLE `general_log` (
`event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user_host` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`command_type` varchar(64) NOT NULL,
`argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log';
Zum Aktivieren des Query-Logs reicht dann
SET global general_log = 1;
SET global log_output = 'table';
Angezeigt wird das Log bspw. mit
select * from mysql.general_log
Um das Logging wieder zu deaktivieren reicht ein
SET global general_log = 0;
Gelöscht wird das Log mit
TRUNCATE TABLE 'mysql.general_log;
Das funktioniert so auch für slow-querys. Die entsprechende Tabelle mysql.slow_log
kann so angelegt werden:
CREATE TABLE `slow_log` (
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user_host` mediumtext NOT NULL,
`query_time` time NOT NULL,
`lock_time` time NOT NULL,
`rows_sent` int(11) NOT NULL,
`rows_examined` int(11) NOT NULL,
`db` varchar(512) NOT NULL,
`last_insert_id` int(11) NOT NULL,
`insert_id` int(11) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`sql_text` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log';
Possibly related posts: (automatically generated)
- Related posts on queries
- Does Raspberry Ketone Max Operate | cibeda419