MySQL 7种日志类型 详解
生活随笔
收集整理的這篇文章主要介紹了
MySQL 7种日志类型 详解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
MySQL除了有些表類型會用到事務(wù)日志外,還使用了7種日志文件,這些日志文件都是可選項。
1. 二進制日志 二進制日志存儲修改數(shù)據(jù)庫中表數(shù)據(jù)的所有動作,包含了所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)的所有語句。潛在跟新了數(shù)據(jù)的SQL語句例如:無法匹配行的DELETE語句;設(shè)置列為當(dāng)前值的UPDATE語句。除此之外,該日志還存儲了語句執(zhí)行期間耗時的相關(guān)信息。二進制日志文件以一種更有效并且是事務(wù)安全的方式包含更新日志中可用的所有信息。MySQL在執(zhí)行語句之后,但在釋放鎖之前,馬上將修改寫入二進制日志中, ?????? 使用–log-bin[=file_name]選項啟動該日志類型,mysqld寫入包含所有更新數(shù)據(jù)的SQL命令的日志文件。如果未給出file_name值,默認(rèn)名為“HOSTNAME-bin.nnnnn”;如果給出了文件名,但沒有包含路徑,則文件被寫入數(shù)據(jù)目錄。如果在日志名中提供了擴展名(例如,–log-bin=file_name.extension),則擴展名被悄悄除掉并忽略。二進制日志文件名的.nnnn表示,mysqld在每個二進制日志名后面添加一個數(shù)字?jǐn)U展名。每次啟動服務(wù)器或刷新日志(flush logs)時該數(shù)字增加1。如果當(dāng)前的日志大小達到設(shè)定的max_binlog_size,還會自動創(chuàng)建新的二進制日志。如果在該文件的末尾正使用大的事務(wù),二進制日志還有肯呢個會超過max_binlog_size:事務(wù)全寫入一個二進制日志中,絕對不要寫入不同的二進制日志中。?????? –binlog-do-db=db_name 告訴主服務(wù)器,如果當(dāng)前的數(shù)據(jù)庫(即USE選定的數(shù)據(jù)庫)是db_name,應(yīng)將更新記錄到二進制日志中。其它所有沒有明顯指定的數(shù)據(jù)庫被忽略。 如果數(shù)據(jù)庫啟動時使用選項–binlog-do-db=DB_A,使用語句“use DB_B”置DB_B為當(dāng)前數(shù)據(jù)庫,此時使用update語句修改DB_A的表數(shù)據(jù)時出現(xiàn)如下情況: 數(shù)據(jù)庫DB_B不在允許binlog的列表內(nèi),該語句不寫入二進制日志文件 數(shù)據(jù)庫DB_B在允許binlog的列表內(nèi),該語句寫入二進制日志文件 –binlog-ignore-db=db_name 告訴主服務(wù)器,如果當(dāng)前的數(shù)據(jù)庫(即USE選定的數(shù)據(jù)庫)是db_name,不將更新保存到二進制日志中。 綜上所述,使用這個兩個選項時決定是否將該語句寫入日志文件還有參考當(dāng)前數(shù)據(jù)庫的屬性,如果指定了這兩個選項盡量使指定的數(shù)據(jù)庫為當(dāng)前數(shù)據(jù)庫,才能按照邏輯來記錄日志。但CREATE DATABASE、ALTER DATABASE和DROP DATABASE等語句,有一個例外,即通過操作的數(shù)據(jù)庫來決定是否應(yīng)記錄語句。 2.調(diào)試日志 如果使用調(diào)試的方式來編譯MySQL客戶機或服務(wù)器,則可以生成一個調(diào)試日志文件。默認(rèn)情況下,MySQL將調(diào)試日志寫到/tmp/mysql.trace,也可以使用debug命令行選項來修改該位置。 3.????錯誤日志 該日志文件包含了當(dāng)mysqld啟動和停止時,以及服務(wù)器在運行過程中發(fā)生任何嚴(yán)重錯誤時的相關(guān)信息。可以用–log-error[=file_name]選項來指定mysqld保存錯誤日志文件的位置。 當(dāng)使用mysqld_safe啟動服務(wù)器時,該腳本自動在啟動項上加上–log-error但沒有加上file_name,或者直接在libexec目錄下使用./mysqld –user=mysql –log-error啟動服務(wù)器,此時沒有給定file_name值,mysqld將使用錯誤日志名host_name.err 并在數(shù)據(jù)目錄中寫入日志文件。 將錯誤信息寫入錯誤日志文件的原理是,服務(wù)器將對標(biāo)準(zhǔn)錯誤輸出重定向到該日志文件,所以如果不指定–log-error,錯誤被寫入標(biāo)準(zhǔn)錯誤輸出stderr,通常標(biāo)準(zhǔn)輸出為你的終端。如果在程序中有printf等語句的話,這些函數(shù)打印出的信息也被寫入該日志文件。 如果執(zhí)行FLUSH LOGS,錯誤日志用-old重新命名后綴并且mysqld創(chuàng)建一個新的空日志文件。如第一次生成的錯誤日志為:linux-8tpn.err。執(zhí)行該命令后將該文件重命名為:linux-8tpn.err-old。 4.????MyISAM日志 該日志文件供MySQL開發(fā)小組使用該日志來調(diào)試MyISAM表處理器。使用–log-isam選項開啟該日志類型,服務(wù)器在數(shù)據(jù)目錄下創(chuàng)建myisam.log文件。 可以使用myisamlog使用程序從myisam.log文件中提取統(tǒng)計信息,除非用戶正在調(diào)試MyISAM表處理器,否則對該日志可能不感興趣。 下面為使用myisamlog的輸出實例,暫不清楚各項是什么意思。| linux-8tpn:/home/mysql/var # myisamlog myisam.log Commands?? Used count??? Errors?? Recover errors open?????????????? 12???????? 0??????????????? 0 close?????????????? 6???????? 0????? ??????????0 extra????????????? 53???????? 0??????????????? 0 Total????????????? 71???????? 0??????????????? 0 |
| ./mysqld, Version: 5.0.41-debug-log (Source distribution). started with: Tcp port: 3306 Unix socket: /tmp/mysql.sock Time???????????????? Id Command??? ??Argument 080406 2:05:52?????? 1 Connect???? ???root@localhost on mysql ???????????????????? 1 Query?????? ???select * from user 080406 2:21:09????? 1 Query?????? ???desc user 080406 2:21:43?????? 1 Query?????? ???select * from user a, user b where a.Host = b.User |
| 080306 13:56:59 [ERROR] The update log is no longer supported by MySQL in version 5.0 and above. It is replaced by the binary log |
也就是說在MySQL V5.0以上,系統(tǒng)已經(jīng)不在支持該日志類型,取而代之的是二進制日志。
轉(zhuǎn)載于:https://blog.51cto.com/machael/210474
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的MySQL 7种日志类型 详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不要一辈子靠技术生存!!
- 下一篇: 有关Rating组件的研究——Silve