MYSQL日志用于記錄數(shù)據(jù)庫(kù)服務(wù)器的活動(dòng)情況,常用日志文件學(xué)習(xí)參考如下。
1.Error log:? 用于記錄數(shù)據(jù)庫(kù)服務(wù)器的啟動(dòng),關(guān)閉過(guò)程以及在啟動(dòng),運(yùn)行過(guò)程中發(fā)生的錯(cuò)誤。變量如下:
》log_error:用于指定錯(cuò)誤日志文件
》log_error_verbosity:用于指定在日志文件中記錄什么樣的信息,可選參數(shù):-1 errors only? ? -2 errors and warnings -3errors,warnings,and notes(默認(rèn)值)
》log_timestamps:日志中時(shí)間的格式,可選值為UTC或者SYSTEM
2.General Query Log? :用于記錄MYSQL在做什么,當(dāng)客戶端產(chǎn)生或者端來(lái)鏈接,產(chǎn)生日志,客戶端的SQL語(yǔ)句,鏈接信息,所用協(xié)議TCP/IP,SOCKET,將按接收順序記錄在日志中
》log_output:用于指定日志記錄在什么地方,可選值為T(mén)ABLE,FILE,NONE之一或多個(gè),逗號(hào)分開(kāi),其中NONE優(yōu)先(None,表示服務(wù)器不產(chǎn)生這類(lèi)日志,F(xiàn)ILE代表日志被寫(xiě)入日志文件,TABLE表示這類(lèi)日志被寫(xiě)入數(shù)據(jù)庫(kù)的general_log表中)。例如:mysql> set global log_output='FILE,TABLE';
》general_log:用于enable或disable日志
》general_log_file:用于指定日志文件的名稱(chēng)。如果沒(méi)有指定文件名稱(chēng),則采用hostname.log為文件名稱(chēng),如果指定相對(duì)路徑,則相對(duì)于datadir,將記錄創(chuàng)建用戶,修改用戶口令的相關(guān)SQL語(yǔ)句,但不記錄明文指令。啟動(dòng)og-raw,任何SQL語(yǔ)句都將原樣記錄在日志中。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sql_log_off用于關(guān)閉或打開(kāi)當(dāng)前會(huì)話中的GeneralQuery Log。
3.Binary Log 用于記錄那些引起數(shù)據(jù)庫(kù)變化的事件,如表的創(chuàng)建,數(shù)據(jù)的變化,以及每條SQL語(yǔ)句執(zhí)行所用的時(shí)間,包括可能引起數(shù)據(jù)變化的用戶訪問(wèn),例如沒(méi)有刪除任何數(shù)據(jù)的DELETE和沒(méi)有修改任何數(shù)據(jù)的UPDATE,但是SELECT和SHOW不會(huì)被記錄在日志中,因?yàn)檫@些并不引起數(shù)據(jù)的變化。
Binarylog主要作用:數(shù)據(jù)庫(kù)的恢復(fù)(當(dāng)數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí),利用以前所做備份,把數(shù)據(jù)庫(kù)恢復(fù)到最后的備份點(diǎn),然后利用日志,把數(shù)據(jù)庫(kù)恢復(fù)到最后的故障點(diǎn))和數(shù)據(jù)庫(kù)的復(fù)制(master服務(wù)器將日志發(fā)送到slave服務(wù)器,slave根據(jù)日志產(chǎn)生數(shù)據(jù))
有關(guān)選項(xiàng):mysqld在啟動(dòng)時(shí),需要使用以下選項(xiàng)
-log_bin:用戶指定日志文件的名稱(chēng),實(shí)際的文件名稱(chēng)加附加000001這樣的編號(hào),文件默認(rèn)存儲(chǔ)在datadir中,除非指定絕對(duì)路徑? -log_bin_index:指定索引文件的名稱(chēng),默認(rèn)與日志文件的名稱(chēng)相同,以.index為擴(kuò)展名,記錄已經(jīng)產(chǎn)生的日志文件-server-id 為當(dāng)前服務(wù)器指定一個(gè)編號(hào)-log_bin_basename:代表日志文件的完整路徑,無(wú)需設(shè)置僅僅是查看。-sql_log_bin用于當(dāng)前回話中關(guān)閉(0)或者打開(kāi)(1)binary log
Binary log文件大小的設(shè)置:-全局變量max_binlog_size用于設(shè)置日志文件的大小(默認(rèn)是1G),當(dāng)數(shù)據(jù)庫(kù)服務(wù)器重啟或者用戶進(jìn)行flush log時(shí)候,將按照編號(hào)順序,產(chǎn)生一個(gè)新的日志文件,即使文件沒(méi)有達(dá)到設(shè)定的最大值。當(dāng)用戶執(zhí)行一個(gè)大的事務(wù)時(shí)候,相關(guān)日志將被寫(xiě)入同一個(gè)日志,此時(shí)文件可能超過(guò)指定的大小
Binary log格式的設(shè)置:日志的格式將影響數(shù)據(jù)從master到salve的復(fù)制。-statement格式,master將SQL語(yǔ)句寫(xiě)入日志,slave將執(zhí)行這樣的SQL語(yǔ)句,產(chǎn)生相應(yīng)的數(shù)據(jù)。-row,master將事件寫(xiě)入日志,事件表明表中的每行數(shù)據(jù)是如何變化的。Slave拷貝這樣的事件,產(chǎn)生相應(yīng)的數(shù)據(jù).-mixed:?服務(wù)器自動(dòng)決定使用上述哪種格式,默認(rèn)使用statement格式,在適當(dāng)?shù)臅r(shí)候切換為row格式.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 動(dòng)態(tài)變量binlog_format用于設(shè)置日志格式:? ? ? ? ? ? ? ? ? ? mysql> set global binlog_format=stream;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?如果在會(huì)話中設(shè)置該變量,只影響當(dāng)前會(huì)話中的日志格式。如mysql> set session binlog_format=row;
4. SLOW Query Log:?用于記錄那些執(zhí)行時(shí)間過(guò)長(zhǎng),并且訪問(wèn)過(guò)多數(shù)據(jù)的SQL語(yǔ)句,動(dòng)態(tài)變量long_query_time用于限定SQL語(yǔ)句的執(zhí)行時(shí)間,單位為秒.動(dòng)態(tài)變量min_examined_row_limit用于限定SQL語(yǔ)句訪問(wèn)的數(shù)據(jù)行數(shù)
Slow Query Log的設(shè)置:動(dòng)態(tài)變量slow_query_log用于開(kāi)啟(1)或關(guān)閉(0)日志。動(dòng)態(tài)變量slow_query_log_file用于指定日志文件名稱(chēng),默認(rèn)為hostname-slow.log,文本文件。如果指定相對(duì)路徑,則相對(duì)于datadir。?動(dòng)態(tài)變量log_output用于指定日志被寫(xiě)入的地方,可選值為FILE,TABLE,NONE之一或多個(gè),例如:mysql> set global log_output='FILE,TABLE';?動(dòng)態(tài)變量log_slow_admin_statements用于指定是否記錄那些執(zhí)行時(shí)間過(guò)長(zhǎng)的管理類(lèi)SQL語(yǔ)句。例如:mysql> set global log_slow_admin_statements =1;管理類(lèi)SQL語(yǔ)句包括:–ALTERTABLE–ANALYZETABLE–CHECKTABLE–CREATEINDEX–DROPINDEX–OPTIMIZETABLE–REPAIRTABLE。?動(dòng)態(tài)變量log_queries_not_using_indexes用于指定是否記錄那些不使用索引的查詢語(yǔ)句,默認(rèn)為OFF。例如:mysql> set global log_queries_not_using_indexes=1;
兩個(gè)工具
---mysqldumpslow? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當(dāng)slow query log 文件越來(lái)越大時(shí),查看文件越來(lái)越困難,mysqldumpslow用于對(duì)日志文件進(jìn)行分析,顯示結(jié)果,能將SQL語(yǔ)句進(jìn)行分組顯示
---mysqlbinlog? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mysqlbinlog工具用于將二進(jìn)制文件的日志文件內(nèi)容以文本的方式顯示,如:mysqlbinlog 選項(xiàng) 日志文件