查看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