ProxySQL Query Logging


Query Logging

ProxySQL能夠記錄完整的查詢日志,是通過查詢規則來配置,粒度可大可小。

Setup

首先,全局啟用logging

SET mysql-eventslog_filename='queries.log'; 

變量需要load到runtime,最后save到磁盤

LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;

 接下來,創建查詢路由規則。如果你需要記錄所有的查詢,簡單配置一下即可:

1 INSERT INTO mysql_query_rules (rule_id, active, match_digest, log,apply) VALUES (1,1,'.',1,0);
View Code

如果你想記錄某個人的所有查詢記錄,如‘Bob’:

1 INSERT INTO mysql_query_rules (rule_id, active, username, match_pattern, log,apply) VALUES (1, 1, 'Bob', '.', 1, 0);
View Code

現在,加載到runtime並持久化到磁盤即可:

1 LOAD MYSQL QUERY RULES TO RUNTIME;
2 SAVE MYSQL QUERY RULES TO DISK;
View Code

Reading Logged Queries

查詢日志以二進制的形式記錄,源碼中有一個app能將二進制轉換成普通平面文件

1 $ ./tools/eventslog_reader_sample /var/lib/proxysql/file1.log.00001258
2 ProxySQL LOG QUERY: thread_id="2" username="root" schemaname=information_schema" client="127.0.0.1:58307" HID=0 server="127.0.0.1:3306" starttime="2016-10-23 12:34:37.132509" endtime="2016-10-23 12:34:38.347527" duration=1215018us digest="0xC5C3C490CA0825C1"
3 select sleep(1)
4 ProxySQL LOG QUERY: thread_id="2" username="root" schemaname=information_schema" client="127.0.0.1:58307" HID=0 server="127.0.0.1:3306" starttime="2016-10-23 12:41:38.604244" endtime="2016-10-23 12:41:38.813587" duration=209343us digest="0xE9D6D71A620B328F"
5 SELECT DATABASE()
6 ProxySQL LOG QUERY: thread_id="2" username="root" schemaname=test" client="127.0.0.1:58307" HID=0 server="127.0.0.1:3306" starttime="2016-10-23 12:42:38.511849" endtime="2016-10-23 12:42:38.712609" duration=200760us digest="0x524DB8D7A9B4C132"
7 select aaaaaaa
View Code

https://github.com/sysown/proxysql/tree/v1.4.4/tools

安裝部署app:

  • 克隆repo或者download源碼安裝
  • cd到tools目錄
  • 執行make

Related Issues and Feature Requests

下面是一些相關功能的討論

Issue #561  -- 記錄所有查詢

Feature Request #871  -- 針對Splunk/ElasticStack應用保存為json格式的日志

Feature Request #1184  -- 記錄到數據庫

參考文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM