So Easy——mysql中日誌的配置與分析

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


分享到:


相關文章: