ProxySQL官檔翻譯__08_ProxySQL配置之查詢日誌

08_ProxySQL配置之查詢日誌

備註:文章編寫時間201904-201905期間,後續官方在github的更新沒有被寫入
~
~

一、查詢日誌[Query Logging]

ProxySQL能夠記錄通過它的查詢語句(所有語句,這裏統稱爲查詢語句-queries)。日誌的配置是跟隨查詢規則一起配置的,這將允許日誌記錄變得寬泛或
是詳細。

二、建立日誌[Setup]

1、首先,全局啓用日誌記錄功能。

Admin> SELECT * FROM global_variables WHERE variable_name = 'mysql-eventslog_filename';
+--------------------------+----------------+
| variable_name            | variable_value |
+--------------------------+----------------+
| mysql-eventslog_filename |                |
+--------------------------+----------------+
1 row in set (0.00 sec)

Admin> SET mysql-eventslog_filename='queries.log';
Query OK, 1 row affected (0.00 sec)

Admin> SELECT * FROM global_variables WHERE variable_name = 'mysql-eventslog_filename';
+--------------------------+----------------+
| variable_name            | variable_value |
+--------------------------+----------------+
| mysql-eventslog_filename | queries.log    |
+--------------------------+----------------+
1 row in set (0.00 sec)

備註:改日誌文件queries.log將在datadir目錄下生成。

2、將配置加載到RUNTIME層並持久化到DISK層

Admin> LOAD MYSQL VARIABLES TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)

Admin> SAVE MYSQL VARIABLES TO DISK;
Query OK, 110 rows affected (0.00 sec)

3、接下來,按需求創建查詢規則以匹配日誌記錄。

如果需要記錄所有查詢,可以使用一個如下簡單的規則:

Admin> SELECT * FROM mysql_query_rules ;
Empty set (0.00 sec)

Admin> INSERT INTO mysql_query_rules (rule_id, active, match_digest, log,apply) VALUES (1,1,'.',1,0);
Query OK, 1 row affected (0.00 sec)

Admin> SELECT * FROM mysql_query_rules \G;
*************************** 1. row ***************************
              rule_id: 1
               active: 1
             username: NULL
           schemaname: NULL
               flagIN: 0
          client_addr: NULL
           proxy_addr: NULL
           proxy_port: NULL
               digest: NULL
         match_digest: .
        match_pattern: NULL
 negate_match_pattern: 0
         re_modifiers: CASELESS
              flagOUT: NULL
      replace_pattern: NULL
destination_hostgroup: NULL
            cache_ttl: NULL
   cache_empty_result: NULL
        cache_timeout: NULL
            reconnect: NULL
              timeout: NULL
              retries: NULL
                delay: NULL
    next_query_flagIN: NULL
       mirror_flagOUT: NULL
     mirror_hostgroup: NULL
            error_msg: NULL
               OK_msg: NULL
          sticky_conn: NULL
            multiplex: NULL
  gtid_from_hostgroup: NULL
                  log: 1
                apply: 0
              comment: NULL
1 row in set (0.00 sec)

4、使規則保持活躍和持久

Admin> LOAD MYSQL QUERY RULES TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)

Admin> SAVE MYSQL QUERY RULES TO DISK;
Query OK, 0 rows affected (0.06 sec)

三、讀取記錄的查詢日誌[Reading Logged Queries]

查詢信息是以二進制格式記錄的。在源碼安裝包中包含一個eventslog_reader_sample應用程序,可以讀取二進制文件並輸出純文本(RPM包中沒有)。
例如:

$ ./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

工具程序構建過程示例:
1)下載源碼包
2)切換到工具目錄
3)執行 make

四、相關問題和功能請求[Related Issues and Feature Requests]

以下是有關此功能的一些相關討論。

1)Issue #561 -- 記錄所有查詢。
https://github.com/sysown/proxysql/issues/561

2)Feature Request #871 --以JSON 格式記錄,以支持Splunk/ElasticStack。
https://github.com/sysown/proxysql/issues/871

3)Feature Request #1184 --記錄到嵌入式數據庫
https://github.com/sysown/proxysql/issues/1184

~
~
完畢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章