MySQL數(shù)據(jù)庫查看日志操作指南
1. 日志
1.1 錯誤日志
錯誤日志是 MySQL 中最重要的日志之一,它記錄了當(dāng) mysqld 啟動和停止時(shí),以及服務(wù)器在運(yùn)行過
程中發(fā)生任何嚴(yán)重錯誤時(shí)的相關(guān)信息。當(dāng)數(shù)據(jù)庫出現(xiàn)任何故障導(dǎo)致無法正常使用時(shí),建議首先查看此日
志。
該日志是默認(rèn)開啟的,默認(rèn)存放目錄 /var/log/ ,默認(rèn)的日志文件名為 mysqld.log 。查看日志
位置:
show variables like '%log_error%';
1.2 二進(jìn)制日志
1.2.1 介紹
二進(jìn)制日志( BINLOG )記錄了所有的 DDL (數(shù)據(jù)定義語言)語句和 DML (數(shù)據(jù)操縱語言)語句,但
不包括數(shù)據(jù)查詢( SELECT 、 SHOW )語句。
作用:① . 災(zāi)難時(shí)的數(shù)據(jù)恢復(fù);② . MySQL 的主從復(fù)制。在 MySQL8 版本中,默認(rèn)二進(jìn)制日志是開啟著
的,涉及到的參數(shù)如下:
show variables like '%log_bin%'; 1
參數(shù)說明:
- log_bin_basename:當(dāng)前數(shù)據(jù)庫服務(wù)器的binlog日志的基礎(chǔ)名稱(前綴),具體的binlog文
- 件名需要再該basename的基礎(chǔ)上加上編號(編號從000001開始)。
- log_bin_index:binlog的索引文件,里面記錄了當(dāng)前服務(wù)器關(guān)聯(lián)的binlog文件有哪些。
1.2.2 格式
MySQL 服務(wù)器中提供了多種格式來記錄二進(jìn)制日志,具體格式及特點(diǎn)如下:
show variables like '%binlog_format%'; 1
如果我們需要配置二進(jìn)制日志的格式,只需要在 /etc/my.cnf 中配置 binlog_format 參數(shù)即可
1.2.3 查看
由于日志是以二進(jìn)制方式存儲的,不能直接讀取,需要通過二進(jìn)制日志查詢工具 mysqlbinlog 來查
看,具體語法:
mysqlbinlog [ 參數(shù)選項(xiàng) ] logfilename 參數(shù)選項(xiàng): -d 指定數(shù)據(jù)庫名稱,只列出指定的數(shù)據(jù)庫相關(guān)操作。 -o 忽略掉日志中的前n行命令。 -v 將行事件(數(shù)據(jù)變更)重構(gòu)為SQL語句 -vv 將行事件(數(shù)據(jù)變更)重構(gòu)為SQL語句,并輸出注釋信息
1.2.4 刪除
對于比較繁忙的業(yè)務(wù)系統(tǒng),每天生成的 binlog 數(shù)據(jù)巨大,如果長時(shí)間不清除,將會占用大量磁盤空
間??梢酝ㄟ^以下幾種方式清理日志:
也可以在mysql的配置文件中配置二進(jìn)制日志的過期時(shí)間,設(shè)置了之后,二進(jìn)制日志過期會自動刪除
show variables like '%binlog_expire_logs_seconds%';
1.3 查詢?nèi)罩?/h3>
查詢?nèi)罩局杏涗浟丝蛻舳说乃胁僮髡Z句,而二進(jìn)制日志不包含查詢數(shù)據(jù)的 SQL 語句。默認(rèn)情況下,
查詢?nèi)罩臼俏撮_啟的
如果需要開啟查詢?nèi)罩?,可以修改MySQL的配置文件 /etc/my.cnf 文件,添加如下內(nèi)容:
#該選項(xiàng)用來開啟查詢?nèi)罩?, 可選值 : 0 或者 1 ; 0 代表關(guān)閉, 1 代表開啟 general_log=1 #設(shè)置日志的文件名 , 如果沒有指定, 默認(rèn)的文件名為 host_name.log general_log_file=mysql_query.log
開啟了查詢?nèi)罩局螅?nbsp;MySQL 的數(shù)據(jù)存放目錄,也就是 /var/lib/mysql/ 目錄下就會出現(xiàn)
mysql_query.log 文件。之后所有的客戶端的增刪改查操作都會記錄在該日志文件之中,長時(shí)間運(yùn)
行后,該日志文件將會非常大
1.4 慢查詢?nèi)罩?/h3>
慢查詢?nèi)罩居涗浟怂袌?zhí)行時(shí)間超過參數(shù) long_query_time 設(shè)置值并且掃描記錄數(shù)不小于
min_examined_row_limit 的所有的 SQL 語句的日志,默認(rèn)未開啟。 long_query_time 默認(rèn)為
10 秒,最小為 0 , 精度可以到微秒。
如果需要開啟慢查詢?nèi)罩?,需要?nbsp;MySQL 的配置文件 /etc/my.cnf 中配置如下參數(shù):
#慢查詢?nèi)罩? slow_query_log=1 #執(zhí)行時(shí)間參數(shù) long_query_time=2
默認(rèn)情況下,不會記錄管理語句,也不會記錄不使用索引進(jìn)行查找的查詢。可以使用
log_slow_admin_statements 和 更改此行為 log_queries_not_using_indexes ,如下所述
#記錄執(zhí)行較慢的管理語句 log_slow_admin_statements =1 #記錄執(zhí)行較慢的未使用索引的語句 log_queries_not_using_indexes = 1
上述所有的參數(shù)配置完成之后,都需要重新啟動 MySQL 服務(wù)器才可以生效。
總結(jié)
到此這篇關(guān)于MySQL數(shù)據(jù)庫查看日志操作的文章就介紹到這了,更多相關(guān)MySQL查看日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
DataGrip的MySQL數(shù)據(jù)導(dǎo)出和導(dǎo)入操作超詳細(xì)指南
很多時(shí)候我們會遇到需要將本機(jī)數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出或者其他數(shù)據(jù)庫數(shù)據(jù)的導(dǎo)入操作,這篇文章主要給大家介紹了關(guān)于DataGrip的MySQL數(shù)據(jù)導(dǎo)出和導(dǎo)入操作超詳細(xì)指南,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04mysql error:#1062 Duplicate entry ‘***′ for key 1問題解決方法
今天公司的一個網(wǎng)站突然提示MySQL Error Duplicate entry '96624' for key 1錯誤,經(jīng)過分析這個問題是由于mysql表中的一個id自增長字段導(dǎo)致。2011-09-09