掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
MySQL中有六種日志文件,分別是:重做日志(redo log)、回滾日志(undo log)、二進(jìn)制日志(binlog)、錯(cuò)誤日志(errorlog)、慢查詢?nèi)罩荆╯low query log)、一般查詢?nèi)罩荆╣eneral log)、中繼日志(relay log)。

普寧網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
錯(cuò)誤日志記錄了 MySQL Server 運(yùn)行過程中所有較為嚴(yán)重的警告和錯(cuò)誤信息,以及 MySQL Server 每次啟動(dòng)和關(guān)閉的詳細(xì)信息。
在默認(rèn)情況下,系統(tǒng)記錄錯(cuò)誤日志的功能是關(guān)閉的( 我所使用的 MySQL 5.6 是開啟的 ),錯(cuò)誤信息被輸出到標(biāo)準(zhǔn)錯(cuò)誤輸出( Stderr )。
需要開啟系統(tǒng)記錄錯(cuò)誤日志功能時(shí),需要在啟動(dòng)時(shí)開啟 -log-error 選項(xiàng)。錯(cuò)誤日志默認(rèn)存放在數(shù)據(jù)目錄下,以 hostname.err 命令。
可以使用 –log-error=file_name 的方式或在 my.cnf 中指定其存放的位置和文件名。
為了方便維護(hù),可以通過 flush logs 來生成新的日志文件( 要先將原有的日志文件 mv 一下 )。
二進(jìn)制日志,即 binlog 。也是 MySQL Server 中最為重要的日志之一。
當(dāng)我們通過 –log-bin=file_name 打開了二進(jìn)制日志功能之后,MySQL 會(huì)將所有修改數(shù)據(jù)庫的 query 以二進(jìn)制的形式記錄到日志文件中。
還包括每一條 query 所執(zhí)行的時(shí)間、消耗的資源,以及相關(guān)的事務(wù)信息;所以 binlog 是事務(wù)安全的。
二進(jìn)制日志跟錯(cuò)誤日志一樣,binlog 記錄功能也需要 –log-bin=file_name 或 my.cnf 中指定來開啟;如果沒有指定 file_name ,會(huì)在數(shù)據(jù)目錄下生成 MySQL-bin.******* 的日志文件。
MySQL-bin.index 文件的功能是記錄所有 Binary log 的絕對(duì)路徑,保證 MySQL 各種線程能順利根據(jù)它找到所需要的 Binary log 文件。
binlog 相關(guān)的其它參數(shù):
–max_binlog_size ## 設(shè)置 binlog 的最大存儲(chǔ)上限,當(dāng)日志達(dá)到該上限時(shí),MySQL 會(huì)重新生成一個(gè)新的日志開始繼續(xù)記錄。
偶爾也會(huì)超出該上限,是因?yàn)樵诩磳⒌竭_(dá)上限時(shí),產(chǎn)生了一個(gè)較大的事務(wù),為了保證事務(wù)安全,MySQL 不會(huì)將同一個(gè)事務(wù)存放到兩個(gè) binlog 中。
–binlog-do-db=db_name ## 僅僅針對(duì)該 db_name 記錄 binlog ,而忽略針對(duì)其余數(shù)據(jù)庫執(zhí)行的 query 。
–binlog-ignore-db=db_name ## 與上一參數(shù)正好相反,忽略針對(duì)該數(shù)據(jù)庫的 query ,記錄其余所有數(shù)據(jù)庫的 binlog 。
## 這兩參數(shù)指的 db_name 不是指 query 語句更新的數(shù)據(jù)所在的數(shù)據(jù)庫,而是執(zhí)行 query 時(shí)所處的數(shù)據(jù)庫。( 感覺很好理解,說多了容易亂 )
更新日志是 MySQL 在較老版本上使用的,其功能跟 binlog 類似,只不過不是以二進(jìn)制格式記錄,而是以簡單文本格式記錄內(nèi)容。
從 MySQL 5.0 開始,MySQL 已經(jīng)不再支持更新日志了。
查詢?nèi)罩居涗?MySQL 中所有的 query ,通過 –log=file_name 來打開該功能。
由于該日志記錄了所有的 query ,包括所有的 select ,體積比較大,開啟后會(huì)對(duì)性能有較大的影響,所以一般不開啟。
該日志一般用于跟蹤某些特殊的 SQL 性能問題才會(huì)短暫開啟。默認(rèn)文件名為 hostname.log ,位置也在數(shù)據(jù)目錄下。
慢查詢?nèi)罩居涗浀木褪菆?zhí)行時(shí)間較長的 query 咯,即 Slow query 。
通過 –log-slow-queries=file_name 開打開此功能并設(shè)置文件位置和文件名,默認(rèn)文件名為 hostname-slow.log ,位置同樣在數(shù)據(jù)目錄下。
慢查詢?nèi)罩静捎玫氖呛唵挝谋靖袷剑梢酝ㄟ^各種文本編輯器查看其中的內(nèi)容。
記錄了語句執(zhí)行的時(shí)刻,所消耗的時(shí)間、執(zhí)行的用戶、連接主機(jī)等相關(guān)信息。
MySQL 還提供了用于專門分析慢查詢?nèi)罩镜墓ぞ?MySQLslowdump ,用來幫助我們了解可能存在的性能問題。
Innodb 是一個(gè)事務(wù)安全的存儲(chǔ)引擎,其事務(wù)安全性主要就是通過在線 redo 日志和記錄在表空間中的 undo 信息來保證的。
redo 日志中記錄了 Innodb 所做的所有物理變更和事務(wù)信息,通過 redo 日志和 undo 信息,Innodb 保證了在任何情況下的事務(wù)安全性。
Innodb 的 redo 日志同樣默認(rèn)在數(shù)據(jù)目錄下,可以通過 innodb_log_group_home_dir 來更改其存放位置,通過 innodb_log_files_in_group 設(shè)置日志數(shù)量。

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流