MySQL有多種類型的日誌:Error Log、General Query Log、Binary Log 、Slow Query Log、Relay log(slave server)還有undo log/redo log
默認情況下,如果日誌沒有配置,則只記錄錯誤日誌,記錄到syslog,配置文件 /etc/mysql/conf.d/mysqld_safe_syslog.cnf (ubuntu下)
來實現事務。
一、錯誤日誌
默認情況下查詢日誌是開啟的
它記錄的事件有:
1、服務器啟動和關閉過程中的信息
2、服務器運行過程中的錯誤信息
3、事件調度器運行一個事件時產生的信息
4、(如果被配置為從服務器)啟動從服務器進程時產生的信息
可配置項
//log-error[=FILENAME/PATH_TO_FILENAME] Static
//log-warnings[=NUMERIC_VALUE] Dynamic
配置
[mysqld_safe] log_error=/data/logs/mysql/mysql_error.log
[mysqld] log_error=/data/logs/mysql/mysql_error.log
配置選項
log-warnings | skip-log-warnings
syslog | skip-syslog
作用範圍為全局或會話級別,可用於配置文件,屬非動態變量
二、查詢日誌
默認情況下查詢日誌是關閉的。
調試的時候可以開啟,一般情況下不要開啟,查詢日誌會增加很多磁盤 I/O
可配置項
//general-log[={0,1}] Dynamic
//general_log_file[=FILENAME] Dynamic
//log-output=PATH_TO_FILE/TABLE/NONE Dynamic
配置(輸出為file)
log-output=FILE
general_log=ON
general_log_file=/data/logs/mysql/general_log.log
開啟與關閉
mysql> SET GLOBAL general_log = 'ON';
mysql> SET GLOBAL general_log = 'OFF';
三、慢查詢日誌
默認情況下查詢日誌是關閉的
慢查詢是指執行時長(包括等待CPU/IO的時間)超過 long_query_time 這個變量定義的時長的查詢
開銷比較小,可以用於定位性能問題,建議開啟
可配置項
//slow-query-log[={0,1}] Dynamic
//slow_query_log_file[=FILENAME] Dynamic
//log-output=PATH_TO_FILE/TABLE/NONE Dynamic
//log-slow-admin-statements[={OFF,ON}]
//log-queries-not-using-indexes[={OFF,ON}] Dynamic
//log-slow-slave-statements[={OFF,ON}] slave
//log-short-format[={FALSE,TRUE}]
//long_query_time[=NUMERIC] Dynamic
//min-examined-row-limit[=NUMERIC] Dynamic
配置
long_query_time = 2
slow-query-log = on
slow-query-log-file = /data/logs/mysql/slow_query.log
log-queries-not-using-indexes
log-output=FILE
開啟與關閉
mysql> SET GLOBAL slow_query_log = 'ON';
mysql> SET GLOBAL slow_query_log = 'OFF';
關閉慢查詢日誌
log-output=NONE
log_slow_queries=0
四、二進制日誌
默認沒有開啟
二進制日誌記錄 MySQL 數據庫中所有與更新相關的操作,即二進制日誌記錄了所有的 DDL(數據定義語言)語句和 DML(數據操縱語言)語句,
但是不包括數據查詢語句。
最重要的兩個用途 :恢復數據庫和主從複製
配置
binlog_format=mixed
max_binlog_size=1024M
log_bin=/data/logs/mysql/binarylog/mysql_bin
expire_logs_days=0
binlog_cache_size = 2M
max_binlog_cache_size = 4M
log-bin-index 指向 master-bin 這個文件,記錄有哪些分塊的Binlog文件名。
log-bin 記錄Binlog文件名前綴,後綴會用數字遞增
Binlog有3種格式,STATMENT,ROW,MIXED,混合格式(mixed)會在適當時候切換row和statment格式。
查看命令
mysql> SHOW VARIABLES LIKE 'log_bin%';
mysql> show variables like '%binlog%';
mysql> show binary logs;
mysql> show master status;
mysql> show binlog events;
五、中繼日誌
中繼日誌是一組複製在從服務器複製過程中創建的日誌文件。
格式和二進制日誌相同,其中包含影響數據或結構事件的記錄,mysqlbinlog可用於顯示其內容。它由一組的中繼日誌文件和包含所有中繼日誌文
件的列表的索引文件,從主服務器的二進制日誌讀取然後寫入到從服務器。一旦不再需要的舊中繼日誌文件將自動刪除,沒有直接的刪除中繼日誌
的機制,因為SQL線程可以負責完 成。
在下面的條件下創建新的中繼日誌
· 每次I/O線程啟動時創建一個新的中繼日誌。
· 當日志被刷新時;例如,用FLUSH LOGS或 mysqladmin flush-logs。
· 噹噹前的中繼日誌文件變得太大時。“太大”含義的確定方法:
o max_relay_log_size,如果max_relay_log_size > 0
o max_binlog_size,如果max_relay_log_size = 0
master.info && relay-log.info
摘自博客https://www.cnblogs.com/chenpingzhao/p/4898609.html
閱讀更多 IT碼將 的文章