-
Notifications
You must be signed in to change notification settings - Fork 981
Query Logging
proxySQL is able to log queries that pass through. Logging is configured with Query Rules. This allows very broad or granular logging.
First, enable logging globally
SET mysql-eventslog_filename='queries.log';
The variable needs to be loaded at runtime, and eventually saved to disk:
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
Next, create query rules to match your logging desires. If you need to Log ALL queries, a simple rule will work:
INSERT INTO mysql_query_rules (rule_id, active, match_digest, log,apply) VALUES (1,1,'.',1,0);
If you don't trust Bob, you can log all of Bob's queries:
INSERT INTO mysql_query_rules (rule_id, active, username, match_pattern, log,apply) VALUES (1, 1, 'Bob', '.', 1, 0);
Now, make the rules active and persistent:
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
The queries are logged in binary format. There is a sample app included in source that can read the binary files and output plain text.
$ ./tools/eventslog_reader_sample /var/lib/proxysql/file1.log.00001258
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"
select sleep(1)
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"
SELECT DATABASE()
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"
select aaaaaaa
https://github.com/sysown/proxysql/tree/v1.4.4/tools
To build the sample app:
- Clone the repo / Download the source
- Change to tools directory
- execute
make
Here's some related discussion on this feature.
Issue #561 -- Logging all queries.
Feature Request #871 -- Logging in JSON format for Splunk/ElasticStack, etc.
Feature Request #1184 -- Logging to Embedded Database.