如何配置mysql數據庫的操作日志及如何查看mysql的操作日志記錄
MySQL的幾種操作日志
1、錯誤日志 log_error (主要是記錄啟動、運行、停止mysql時出現的致命問題,系統級別的錯誤記錄)
2、查詢日志 log (主要記錄數據庫建立的客戶端連接和執行的語句)
3、二進制日志 log_bin (主要是記錄所有的更改數據的語句,可使用mysqlbinlog命令恢復數據)
4、慢日志 log_slow_queries (主要是記錄所有執行時間超過long_query_time的查詢或沒有使用索引的查詢)
5、更新日志 log_update(官方建議不開啟,在此忽略)
如何去查詢這些日志是否開啟:
用mysql命令客戶端登錄mysql
1、錯誤日志 log_error
mysql>show variables like 'log_error';
2、查詢日志 log
mysql>show variables like 'log';
3、二進制日志 log_bin
mysql>show variables like 'log_bin'; (確認二進制日志是否開啟)
mysql>show master status; (當前日志)
mysqlbinlog --start-datetime='2008-12-01 00:00:00' --stop-datetime='2008-12-02 00:00:00' /var/log/mysql/mysql-bin.000006 > mysqllog1.log (查看時間段內的日志)
4、慢日志 log_slow_queries
mysql>show variables like 'log_slow_queries';
如果Value的值為OFF,則說明沒有開啟。如何去配置:
1、log-error開啟方式:在my.ini(linux:/etc/my.conf)的[mysqld]選項下,添加代碼:log_error=path\filename
2、log開啟方式:在my.ini(linux:/etc/my.conf)的[mysqld]選項下,添加代碼:log=path\filename
3、log-bin開啟方式:在my.ini(linux:/etc/my.conf)的[mysqld]選項下,添加代碼:log_bin=path\filename
4、log_slow_queries開啟方式:在my.ini(linux:/etc/my.conf)的[mysqld]選項下,添加代碼: log_slow_queries=path\filename
long_query_time=1(查詢標准,單位是s/秒)
設置日志過期時間
首先查看日志的過期時間
mysql>show variables like 'expire_logs_days';
0-表示永久不過期
mysql>set global expire_logs_days=30;(設置有效期為30天)
沒有權限:(1227 - Access denied; you need the SUPER privilege for this operation)
解決辦法:vim /etc/my.conf 去掉[mysqld]段中# skip-grant-tables前面的# 如果沒有則在[mysqld]中添加skip-grant-tables
日志過於龐大,查詢起來非常麻煩,可以截取某個時間段內的日志進行查看
sed -n ‘/2018-12-01 09:25:55/,/2018-12-02 09:28:55/p’ logfile>logfile