在 MySQL 與 MariaDB 中可以設定輸出 Log 檔案,並且有三種 Log 分別紀錄 error 錯誤訊息,query 資訊,與過於緩慢的 query 資訊。這些資訊有助於我們在管理 MySQL 資料庫,但是因為我想把這些 Log 資訊全部送往 rsyslog,所以必須先將這些資料輸出成檔案,再利用 rsyslog 的轉發功能送到遠端伺服器。
Environment
OS:CentOS 7.5
MariaDB:10.2.17
設定方法
在 /etc/my.cnf.d/server.cnf 裡加入設定,找到 [mysqld],並將以下設定寫入。
#General Query Log general_log general_log_file = /var/log/mariadb/mysql_query.log #Error Log log_error = /var/log/mariadb/mysql_error.log #Slow Query Log slow_query_log = 1 slow_query_log_file = /var/log/mariadb/mysql_slow.log long_query_time = 2
並且確認資料要往何處送,像是我把資料都送往 /var/log/mariadb/ 目錄中。
long_query_time 表示要取運行多久以上的 query,在我的設定中是所有超過兩秒以上的 qurey 就要記錄下來,這裡的數值只有 1-10。
這樣應該就會在 /var/log/mariadb 看到三個相對應的檔案,之後我們只要把這檔案送入遠端的 syslog 伺服器即可。