Mysql數據庫日志配置


查看mysql安裝位置

執行命令找到mysql安裝位置basedir

show VARIABLES;

日志類型

mysql有以下幾種日志
   錯誤日志:     -log-err  
   查詢日志:     -log  
   慢查詢日志:   -log-slow-queries  
   更新日志:     -log-update  
   二進制日志: -log-bin

my.ini配置

修改/conf/my.ini文件,官網文檔

#在[mysqld]下配置錯誤日志,查詢日志,慢日志
#錯誤日志
log-error=/usr/local/mysql/log/error.log

#查詢日志,對所有執行語句進行記錄
general_log=on
general_log_file=/usr/local/mysql/log/mysql.log  

#開啟慢查詢
slow_query_log = on
#慢查詢中記錄沒有使用索引的query
log-queries-not-using-indexes=on
#返回較慢的日志mysql5.6版本以上,取消了參數log-slow-queries,更改為slow-query-log-file 
slow-query-log-file= /usr/local/mysql/log/slowquery.log
#慢查詢時間,這里為2秒,超過2秒會被記錄
long_query_time=2

#日志輸出到文件/數據庫,都輸出用,分割,默認只輸出到FILE.加上TABLE后會輸出在mysql.general_log,slow_log
#log_output='FILE,TABLE'

#二進制日志
server_id=1918         
log_bin = mysql-bin
binlog_format = ROW

windows中配置路徑時要用\\,不然\s會被替換成空格. 

使用場景

錯誤日志:系統故障時,建議首先查看錯誤日志,以幫助用戶迅速定位故障原因。
二進制日志:如果要記錄數據的變更、數據的備份、數據的復制等操作時,二進制日志必須打開,以幫助用戶進行數據恢復等操作。默認不記錄此日志,建議通過--log-bin 選項將此日志打開。
查詢日志:如果希望記錄數據庫發生的任何操作,包括 SELECT,則需要用--log 將查詢日志打開,此日志默認關閉,一般情況下建議不要打開此日志,以免影響系統整體性能。
慢查詢日志:如 果希 望查看 系統的 性能 問題, 希望 找到有 性能 問題的 SQL 語 句,則 需要 用--log-slow-queries 打開慢查詢日志。對於大量的慢查詢日志,建議使用 mysqldumpslow 工具來進行匯總查看。

開啟二進制日志

mysql -uroot -p    #登錄數據庫
show variables like 'log_bin';  #查看是否開啟日志

 OFF表示關閉,查看配置文件my.cnf是否有關於log_bin的配置,如果沒有在[mysqld]下面添加如下配置

server_id=1918
log_bin = mysql-bin
binlog_format = ROW

mysql binlog的三種工作模式

(1)ROW:基於行的復制
日志中會記錄每一行數據被修改的形式

(2)Statement:基於sql語句的復制
每一條會修改數據的sql都會記錄到master的bin-log中

(3)MIXED:混合模式復制,
在Mixed模式下,MySQL會根據執行的每一條具體的sql語句來區分對待記錄的日志格式,也就是在Statement和Row之間選擇一種

保存后重啟Mysql服務后再次查詢

show variables like 'log_bin';  #查看是否開啟日志
show variables like 'binlog_format';  #查看日志記錄方式

查詢二進制日志文件

登錄數據庫查詢當前二進制日志文件

show master logs;
show binary logs;

mysqlbinlog查詢二進制文件

mysqlbinlog ./mysql-bin.000001 -v

查詢選定時間段

mysqlbinlog -d deep_creator --start-datetime='2020-03-25 10:54:00' --stop-datetime='2020-03-25 10:55:00' -s ./mysql-bin.***-v

報錯

mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8'

使用--no-defaults參數

mysqlbinlog --no-defaults mysql-bin.000001

TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option

配置文件增加

[mysqld]
explicit_defaults_for_timestamp=true

 


免責聲明!

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



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