show global variables like '%slow%';+--------------------" />
MySQL命令行開啟slow.log失敗解決
有需要去看下slow.log,但是發(fā)現(xiàn)slow.log好久沒寫了。
看了下服務(wù)器設(shè)置:
root@(none) 01:13:41>show global variables like '%slow%';
+---------------------+-------------------------+
| Variable_name | Value |
+---------------------+-------------------------+
| log_slow_queries | OFF |
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | /u01/mysql/log/slow.log |
+---------------------+-------------------------+
4 rows in set (0.00 sec)
關(guān)閉的,于是開啟,竟然報錯。
root@(none) 01:14:27>set global slow_query_log=1;
ERROR 1146 (42S02): Table 'mysql.slow_log' doesn't exist
發(fā)現(xiàn)mysql.slow_log表不存在,desc了下,確實不存在。該表,是當(dāng)開啟參數(shù)log_output設(shè)置為table的時候,slow.log會記錄到這個表里面,但是由于記錄該表會對性能有影響,所以一般都是記錄到FILE里面,然后再用腳本來處理。
那么難道寫FILE也必須該表存在嗎?
我手動把這個表建上。
// 不讓該操作寫到binlog中
set session sql_log_bin=0;
use mysql
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
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
然后:
root@mysql 01:34:02>set global slow_query_log=1;
Query OK, 0 rows affected (0.00 sec)
設(shè)置ok,來測試下:
root@(none) 01:35:40>select sleep(2);
+----------+
| sleep(2) |
+----------+
| 0 |
+----------+
1 row in set (2.00 sec)
slow.log里面:
Time: 130124 13:35:52
# User@Host: root[root] @ localhost []
# Query_time: 2.002410 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1359005752;
select sleep(2);
設(shè)置成功。
總結(jié):
mysql.slow_log表還是必須的,沒有這個表slow log 也不能輸出到FILE。
bitsCN.com聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com