mysql日志查询指令_MySQL查询日志总结
MySQL查詢?nèi)罩窘榻B
MySQL的查詢?nèi)罩居涗浟怂蠱ySQL數(shù)據(jù)庫請(qǐng)求的信息。無論這些請(qǐng)求是否得到了正確的執(zhí)行。默認(rèn)文件名為hostname.log。默認(rèn)情況下MySQL查詢?nèi)罩臼顷P(guān)閉的。生產(chǎn)環(huán)境,如果開啟MySQL查詢?nèi)罩?#xff0c;對(duì)性能還是有蠻大的影響的。另外很多時(shí)候,MySQL慢查詢?nèi)罩净究梢远ㄎ荒切┏霈F(xiàn)性能問題的SQL,所以MySQL查詢?nèi)罩緫?yīng)用的場(chǎng)景其實(shí)不多,有點(diǎn)雞肋的感覺,它跟SQL Server中的profiler有點(diǎn)類似,但是這個(gè)不能跟蹤某個(gè)會(huì)話、用戶、客戶端。它只能對(duì)整個(gè)數(shù)據(jù)庫進(jìn)行跟蹤。MySQL查詢?nèi)罩颈旧肀容^簡(jiǎn)單,網(wǎng)上介紹的不多,官方資料也就那么短短一篇。
MySQL查詢?nèi)罩九渲?/p>
MySQL中的參數(shù)general_log用來控制開啟、關(guān)閉MySQL查詢?nèi)罩?參數(shù)general_log_file用來控制查詢?nèi)罩镜奈恢谩K匀绻阋袛郙ySQL數(shù)據(jù)庫是否開啟了查詢?nèi)罩?#xff0c;可以使用下面命令。general_log為ON表示開啟查詢?nèi)罩?#xff0c;OFF表示關(guān)閉查詢?nèi)罩尽?/p>
mysql> show variables like?'%general_log%';
+------------------+------------------------------+
| Variable_name??? | Value??????????????????????? |
+------------------+------------------------------+
| general_log????? | OFF????????????????????????? |
| general_log_file | /var/lib/mysql/DB-Server.log |
+------------------+------------------------------+
2 rows?in?set (0.00 sec)
mysql>
另外,MySQL的查詢?nèi)罩局С謱懭胛募驅(qū)懭霐?shù)據(jù)表兩種形式,這個(gè)由參數(shù)log_output控制,如下所示:
mysql> show variables like?'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output??? | FILE? |
+---------------+-------+
1 row?in?set (0.00 sec)
mysql>
這三個(gè)參數(shù)general_log、 general_log_file、 log_output都是動(dòng)態(tài)參數(shù),可以隨時(shí)動(dòng)態(tài)修改。
1、開啟MySQL查詢?nèi)罩?/p>
mysql> set?global general_log = on;
Query OK, 0 rows affected (0.11 sec)
mysql> show variables like?'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log?? | ON??? |
+---------------+-------+
1 row?in?set (0.02 sec)
mysql>
2:關(guān)閉MySQL查詢?nèi)罩?/p>
mysql> show variables like?'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log?? | ON??? |
+---------------+-------+
1 row?in?set (0.01 sec)
mysql> set?global general_log=off;
Query OK, 0 rows affected (0.01 sec)
mysql> show variables like?'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log?? | OFF?? |
+---------------+-------+
1 row?in?set (0.00 sec)
mysql>
3:設(shè)置日志輸出方式為表(如果設(shè)置log_output=table的話,則日志結(jié)果會(huì)記錄到名為gengera_log的表中,這表的默認(rèn)引擎是CSV):
mysql> show variables like?'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output??? | FILE? |
+---------------+-------+
1 row?in?set (0.00 sec)
mysql> set?global log_output='table';
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like?'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output??? | TABLE |
+---------------+-------+
1 row?in?set (0.01 sec)
mysql>
查看查詢?nèi)罩拘畔ⅰ?/p>
mysql> select * from mysql.general_log;
+---------------------+---------------------------+-----------+-----------+--------------+----------------------------------+
| event_time????????? | user_host???????????????? | thread_id | server_id | command_type | argument???????????????????????? |
+---------------------+---------------------------+-----------+-----------+--------------+----------------------------------+
| 2017-07-06 12:32:05 | root[root] @ localhost [] |???????? 1 |???????? 1 | Query??????? | show variables like?'general%'?? |
| 2017-07-06 12:32:28 | root[root] @ localhost [] |???????? 1 |???????? 1 | Query??????? | show variables like?'log_output' |
| 2017-07-06 12:32:41 | root[root] @ localhost [] |???????? 1 |???????? 1 | Query??????? | select * from MyDB.test????????? |
| 2017-07-06 12:34:36 | [root] @ localhost []???? |???????? 3 |???????? 1 | Connect????? | root@localhost on??????????????? |
| 2017-07-06 12:34:36 | root[root] @ localhost [] |???????? 3 |???????? 1 | Query??????? | KILL QUERY 1???????????????????? |
| 2017-07-06 12:34:36 | root[root] @ localhost [] |???????? 3 |???????? 1 | Quit???????? |????????????????????????????????? |
| 2017-07-06 12:34:51 | root[root] @ localhost [] |???????? 1 |???????? 1 | Query??????? | select * from mysql.general_log? |
+---------------------+---------------------------+-----------+-----------+--------------+----------------------------------+
7 rows?in?set (0.02 sec)
mysql>
4: 查詢?nèi)罩練w檔
mysql> system mv /var/lib/mysql/DB-Server.log??/var/lib/mysql/DB-Server.log.20170706
mysql> system mysqladmin flush-logs -p
Enter password:
或者你在shell中執(zhí)行下面命令
[root@DB-Server mysql]# mv /var/lib/mysql/DB-Server.log??/var/lib/mysql/DB-Server.log.20170706
[root@DB-Server mysql]# mysqladmin flush-logs -p
Enter password:
5: 修改查詢?nèi)罩久Q或位置
mysql> show variables like?'general_log%';
+------------------+------------------------------+
| Variable_name??? | Value??????????????????????? |
+------------------+------------------------------+
| general_log????? | ON?????????????????????????? |
| general_log_file | /var/lib/mysql/DB-Server.log |
+------------------+------------------------------+
2 rows?in?set (0.00 sec)
mysql> set?global general_log='OFF';
Query OK, 0 rows affected (0.00 sec)
mysql> set?global general_log_file='/u02/mysql_log.log';
Query OK, 0 rows affected (0.00 sec)
mysql> set?global general_log='ON';
Query OK, 0 rows affected (0.02 sec)
如果你遇到下面類似問題,這個(gè)是因?yàn)闄?quán)限問題導(dǎo)致。
mysql> set global general_log_file='/u02/mysql_log.log';
ERROR 1231 (42000): Variable 'general_log_file' can't be set to the value of '/u02/mysql_log.log'
將對(duì)應(yīng)目錄的owner修改為mysql即可解決問題。如下所示:
[root@DB-Server u02]# chown -R mysql:mysql??/u02
另外,MySQL的查詢?nèi)罩居涗浟怂蠱ySQL數(shù)據(jù)庫請(qǐng)求的信息。無論這些請(qǐng)求是否得到了正確的執(zhí)行。這個(gè)就是即使我查詢一個(gè)不存在的表的SQL,查詢?nèi)罩疽廊粫?huì)記錄。如下測(cè)試所示:
mysql> select * from MyDB.test1;
ERROR 1146 (42S02): Table?'MyDB.test1' doesn't exist
mysql> select * from MyDB.test2;
+-------+------+
| id??? | sex? |
+-------+------+
| 10001 |????? |
| 10002 |????? |
| 10003 |???? |
+-------+------+
3 rows in set (0.07 sec)
mysql> select * from MyDB.kkk;
ERROR 1146 (42S02): Table 'MyDB.kkk' doesn't exist
mysql>
MySQL查詢?nèi)罩镜膽?yīng)用場(chǎng)景
存在即是合理,既然MySQL提供了查詢?nèi)罩?#xff0c;那么肯定有其應(yīng)用的地方。比如,我就遇到這樣一個(gè)例子,前陣子碰到別人問mysqlslap壓力測(cè)試工具中參數(shù)的問題,問題如下:
-c, --concurrency=nameNumber of clients to simulate for query to run.
--number-of-queries=#Limiteachclienttothisnumberofqueries(thisisnotexact).
比如我指定:--concurrency=50--number-of-queries=100, 那么這次測(cè)試總的sql執(zhí)行次數(shù)是=100還是50*100=5000 ?
我們不知道--number-of-queries這個(gè)參數(shù)代表所有客戶端的執(zhí)行次數(shù)還是每一個(gè)客戶端的執(zhí)行次數(shù),這些英文如果看得不是太明白,那么我們就動(dòng)手測(cè)試一下,這個(gè)時(shí)候MySQL查詢?nèi)罩揪湍馨l(fā)揮其用武之地了。
[root@DB-Server u02]# mysqlslap -u root -p --concurrency=50 --create-schema='MyDB'? --query='select * from MyDB.test2'? --number-of-queries=100;
Enter password:
Benchmark
Average number of seconds to run all queries: 0.023 seconds
Minimum number of seconds to run all queries: 0.023 seconds
Maximum number of seconds to run all queries: 0.023 seconds
Number of clients running queries: 50
Average number of queries per client: 2
如下所示,我們可以查到這個(gè)SQL總共執(zhí)行了100次,也就是說number-of-queries代表總共要運(yùn)行多少次查詢。每個(gè)客戶運(yùn)行的查詢數(shù)量可以用查詢總數(shù)/并發(fā)數(shù)來計(jì)算。--concurrency表示并發(fā)量,也就是模擬多少個(gè)客戶端同時(shí)執(zhí)行select。如果你指定--number-of-queries=100,--concurrency=50測(cè)試總的SQL執(zhí)行應(yīng)該是100
總結(jié)
以上是生活随笔為你收集整理的mysql日志查询指令_MySQL查询日志总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 客户端通过网口启动可过去的ip_西安交通
- 下一篇: python在哪个城市工资高_专硕好还是