mysql之general_log日誌介紹

來源:互聯網
上載者:User

標籤:code   控制台   開啟   mysql   資料庫   設定檔   oca   日誌   tab   

以下操作示範都是基於mysql5.6.36版本:
工作中經常遇到這樣的問題:mysql資料訪問能量很大,想要從sql方面最佳化。研發經常會問到能看到哪些SQL執行比較頻繁嗎?能看到哪些SQL執行比較頻繁嗎?回道:不能哦,只能看到當前正在啟動並執行SQL和慢日誌裡記錄的SQL。因為為了效能考慮,一般general log不會開啟。slow log可以定位一些有效能問題的sql,而general log會記錄所有的SQL。然而有時候生產上的mysql出現效能問題,短時間開啟general log,來回去sql執行的情況,對排查和分析mysql的效能問題,還是有很大的協助的。或者是有時候,不清楚程式執行了什麼sql語句,但是又要排除錯誤,找不到原因的情況下,也是可以短暫的開啟這個general log日誌的。

mysql5.0版本,如果要開啟slow log、general log,需要重啟,從MySQL5.1.6版開始,general query log和slow query log開始支援寫到檔案或者資料庫表兩種方式,並且日誌的開啟,輸出方式的修改,都可以在Global層級動態修改。

開啟general log有很多的方式。
下面簡單介紹和示範下:

方法一:更改my.cnf設定檔

[[email protected] ~]# grep general_log /etc/my.cnfgeneral_log = 1general_log_file = /tmp/general.log

重新啟動mysql,這個操作相當於是永久生效。當然這種方式是不允許在生產上採用的。因為要重啟mysql,會中斷mysql的業務。同時general.log會記錄所有的關於mysql的DDL和DML語句,非常消耗資源,一般都是在協助排除mysql故障時,臨時短暫的開啟幾分鐘。時候都要關閉的。

方法二:在mysql命令控制台操作
需要root使用者才有訪問此檔案的許可權
預設這個日誌是被關閉掉的。

mysql> show global variables like ‘%general%‘;+------------------+---------------------------------+| Variable_name    | Value                           |+------------------+---------------------------------+| general_log      | OFF                             || general_log_file | /data/mysql/data/git-server.log |+------------------+---------------------------------+2 rows in set (0.00 sec)mysql> 

有時需要臨時開啟MySQL的全域general_log,可以登入mysql直接設定日誌的路徑並開啟general_log

mysql> set global general_log_file=‘/tmp/general_log‘;Query OK, 0 rows affected (0.00 sec)mysql> set global general_log=on;Query OK, 0 rows affected (0.02 sec)mysql> show global variables like ‘%general%‘;+------------------+------------------+| Variable_name    | Value            |+------------------+------------------+| general_log      | ON               || general_log_file | /tmp/general_log |+------------------+------------------+2 rows in set (0.00 sec)mysql> [[email protected] ~]# tailf /tmp/general_log180717 22:55:51     2 Query show databases180717 22:56:04     2 Query SELECT DATABASE()            2 Init DB   test180717 22:56:14     2 Query select * from student3

在使用完後可以直接set global general_log=off;關閉這個日誌

方法三:將日誌儲存在mysql資料庫general_log表中

mysql> set global log_output=‘table‘;mysql> set global general_log=on;mysql> use mysql;mysql> select * from test.student3;+----+--------------+------------+--------+------+| id | teacher_name | teacher_id | name   | sex  |+----+--------------+------------+--------+------+|  1 | 花花         |          1 | 三安   | 女   ||  4 | 散散         |          2 | 三安   | 女   ||  6 | bibi         |          3 | 三安   | 女   |+----+--------------+------------+--------+------+3 rows in set (0.00 sec)mysql> select * from general_log;| 2018-07-17 23:00:12 | root[root] @ localhost [] |         2 | 1132333306 | Query        | select * from test.student3  

查看/tmp/general.log的資訊,可以大致看到哪些sql查詢/更新/刪除/插入比較頻繁了。比如有些表不是經常變化的,查詢量又很大,就完全可以cache;對主備延遲要求不高的表,讀可以放到備庫;等等

mysql之general_log日誌介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.