如何快速定位MySQL 的錯(cuò)誤日志(Error Log)?
日志文件是MySQL數(shù)據(jù)庫(kù)的重要組成部分,包括有6種不同的日志文件:
- 錯(cuò)誤日志: -log-err
- 查詢(xún)?nèi)罩荆?-log
- 慢查詢(xún)?nèi)罩? -log-slow-queries
- 更新日志: -log-update
- 二進(jìn)制日志: -log-bin
這些日志可以幫助我們定位 mysqld 內(nèi)部發(fā)生的事件,數(shù)據(jù)庫(kù)性能故障,記錄數(shù)據(jù)的變更歷史,用戶(hù)恢復(fù)數(shù)據(jù)庫(kù)等。本文主要講解錯(cuò)誤日志文件(Error Log)相關(guān)內(nèi)容。
什么是錯(cuò)誤日志
錯(cuò)誤日志記錄了 MySQL Server 每次啟動(dòng)和關(guān)閉的詳細(xì)信息以及運(yùn)行過(guò)程中所有較為嚴(yán)重的警告和錯(cuò)誤信息。錯(cuò)誤日志的命名通常為「hostname.err」。
PS:「hostname」表示服務(wù)器主機(jī)名。
在實(shí)際工作中,我們不僅通過(guò)分析MySQL錯(cuò)誤日志來(lái)確定MySQL中的慢SQL,還可以通過(guò)它分析得到導(dǎo)致業(yè)務(wù)崩潰和其他故障的根本原因。
查看錯(cuò)誤日志的位置
我們可以用--log-error[=file_name]選項(xiàng)來(lái)開(kāi)啟 mysql 錯(cuò)誤日志,該選項(xiàng)指定 mysqld保存錯(cuò)誤日志文件的位置。
對(duì)于指定--log-error[=file_name]選項(xiàng)而未給定 file_name 值,mysql 使用錯(cuò)誤日志名host_name.err 并在數(shù)據(jù)目錄中寫(xiě)入日志文件。
修改錯(cuò)誤日志的位置
錯(cuò)誤日志所記錄的信息也可以通過(guò)log-error和log-warnings來(lái)定義,其中
- log_error可定義是否啟用錯(cuò)誤日志的功能和錯(cuò)誤日志的存儲(chǔ)位置
- log-warnings可定義是否將警告信息也定義至錯(cuò)誤日志中
可以在啟動(dòng)MySQL時(shí),指定log_error的值。如下所示:
了解了MySQL錯(cuò)誤日志位置以及如何修改其位置,下面簡(jiǎn)單舉例一個(gè)實(shí)踐操作的過(guò)程:
Linux 系統(tǒng)下打開(kāi) MySQL 錯(cuò)誤日志
1. 進(jìn)「mysql」安裝目錄
進(jìn)入「data」目錄(該目錄存儲(chǔ)的是數(shù)據(jù)庫(kù)的數(shù)據(jù))。
2. 進(jìn)入「data」目錄后可發(fā)現(xiàn)有「mysql」、「test」兩個(gè)子目錄(由此可看出 MySQL 數(shù)據(jù)存儲(chǔ)是按用戶(hù)定義的不同數(shù)據(jù)庫(kù)分開(kāi)存儲(chǔ)的)。
3. 進(jìn)入「mysql」目錄,文件后綴為.err 的文件是運(yùn)行的錯(cuò)誤日志,可以使用 vi 命令打開(kāi)進(jìn)行分析。