# vi /etc/my.cnf ... log-output=TABLE,FILE general-log=1 slow-query-log=1 # systemctl restart mysqld
log-output
默認是FILE,還有個值是NONE,就不輸出日誌了.我這裏演示的是表和日誌文件都輸出.mysql
mysql> set global log_output="table", global general_log=on, global slow_query_log=on;
查看相關變量:sql
mysql> show variables like 'general%'; +------------------+--------------------------+ | Variable_name | Value | +------------------+--------------------------+ | general_log | ON | | general_log_file | /var/lib/mysql/srv00.log | +------------------+--------------------------+ 2 rows in set (0.00 sec) mysql> show variables like 'slow%'; +---------------------+-------------------------------+ | Variable_name | Value | +---------------------+-------------------------------+ | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/srv00-slow.log | +---------------------+-------------------------------+ 3 rows in set (0.00 sec)
相關日誌文件:服務器
general_log_file
和slow_query_log_file
變量指示的文件,能夠按須要進行修改oracle
日誌相關的表:工具
mysql> select * from mysql.general_log; mysql> select * from mysql.slow_log;
日誌文件rest
mysql> set global general_log=off; mysql> \! mv /var/lib/mysql/srv00.log /var/lib/mysql/srv00.log.bak mysql> set global general_log=on;
或者:日誌
mv /var/lib/mysql/srv00.log /var/lib/mysql/srv00.log.bak mv /var/lib/mysql/srv00-slow.log /var/lib/mysql/srv00-slow.log.bak mysqladmin flush-logs
修改日誌表原理也是同樣,先暫停,維護表,再啓用code
mysql> show variables like 'long%'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.01 sec)
超過這個秒數的慢查詢才記錄索引
mysql> show variables like 'min%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | min_examined_row_limit | 0 | +------------------------+-------+ 1 row in set (0.00 sec)
返回記錄數超過才記錄資源
mysql> show variables like 'log_slow_admin%'; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | log_slow_admin_statements | OFF | +---------------------------+-------+ 1 row in set (0.00 sec)
是否記錄管理類型的sql, 包括:
ALTER TABLE
,ANALYZE TABLE
,CHECK TABLE
,CREATE INDEX
,DROP INDEX
,OPTIMIZE TABLE
,REPAIR TABLE
.
mysql> show variables like '%not_using_indexes'; +----------------------------------------+-------+ | Variable_name | Value | +----------------------------------------+-------+ | log_queries_not_using_indexes | OFF | | log_throttle_queries_not_using_indexes | 0 | +----------------------------------------+-------+ 2 rows in set (0.01 sec)
沒有使用索引的sql是否要記錄,若是開啓會產生不少記錄,
log_throttle_queries_not_using_indexes
設置每分鐘在此範圍內只記錄一次.
使用工具mysqldumpslow
熟悉oracle的能夠認爲
mysqldumpslow
是oracle的tkprof
固然開啓都會對服務器資源消耗.只在須要的時候開啓,不用的時候關掉.
//END