最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql日志文件和日志類型介紹

 更新時(shí)間:2014年12月01日 11:45:57   投稿:junjie  
這篇文章主要介紹了Mysql日志文件和日志類型介紹,本文講解了日志文件類型、錯(cuò)誤日志、通用查詢?nèi)罩?、慢速查詢?nèi)罩?、二進(jìn)制日志等內(nèi)容,需要的朋友可以參考下

日志文件類型

MySQL有幾個(gè)不同的日志文件,可以幫助你找出mysqld內(nèi)部發(fā)生的事情:

日志文件

記入文件中的信息類型

錯(cuò)誤日志

記錄啟動(dòng)、運(yùn)行或停止mysqld時(shí)出現(xiàn)的問(wèn)題。

查詢?nèi)罩?/p>

記錄建立的客戶端連接和執(zhí)行的語(yǔ)句。

更新日志

記錄更改數(shù)據(jù)的語(yǔ)句。不贊成使用該日志。

二進(jìn)制日志

記錄所有更改數(shù)據(jù)的語(yǔ)句。還用于復(fù)制。

慢日志

記錄所有執(zhí)行時(shí)間超過(guò)long_query_time秒的所有查詢或不使用索引的查詢。

默認(rèn)情況下,所有日志創(chuàng)建于mysqld數(shù)據(jù)目錄中。通過(guò)刷新日志,你可以強(qiáng)制 mysqld來(lái)關(guān)閉和重新打開日志文件(或者在某些情況下切換到一個(gè)新的日志)。當(dāng)你執(zhí)行一個(gè)FLUSH LOGS語(yǔ)句或執(zhí)行mysqladmin flush-logs或mysqladmin refresh時(shí),出現(xiàn)日志刷新。

錯(cuò)誤日志

錯(cuò)誤日志文件包含了當(dāng)mysqld啟動(dòng)和停止時(shí),以及服務(wù)器在運(yùn)行過(guò)程中發(fā)生任何嚴(yán)重錯(cuò)誤時(shí)的相關(guān)信息。

如果mysqld莫名其妙地死掉并且mysqld_safe需要重新啟動(dòng)它,mysqld_safe在錯(cuò)誤日志中寫入一條restarted mysqld消息。如果mysqld注意到需要自動(dòng)檢查或著修復(fù)一個(gè)表,則錯(cuò)誤日志中寫入一條消息。

在一些操作系統(tǒng)中,如果mysqld死掉,錯(cuò)誤日志包含堆棧跟蹤信息。跟蹤信息可以用來(lái)確定mysqld死掉的地方。

可以用--log-error[=file_name]選項(xiàng)來(lái)指定mysqld保存錯(cuò)誤日志文件的位置。如果沒(méi)有給定file_name值,mysqld使用錯(cuò)誤日志名host_name.err 并在數(shù)據(jù)目錄中寫入日志文件。如果你執(zhí)行FLUSH LOGS,錯(cuò)誤日志用-old重新命名后綴并且mysqld創(chuàng)建一個(gè)新的空日志文件。(如果未給出--log-error選項(xiàng),則不會(huì)重新命名)。

如果不指定--log-error,或者(在Windows中)如果你使用--console選項(xiàng),錯(cuò)誤被寫入標(biāo)準(zhǔn)錯(cuò)誤輸出stderr。通常標(biāo)準(zhǔn)輸出為你的終端。

通用查詢?nèi)罩?/strong>

如果你想要知道m(xù)ysqld內(nèi)部發(fā)生了什么,你應(yīng)該用--log[=file_name]或-l [file_name]選項(xiàng)啟動(dòng)它。如果沒(méi)有給定file_name的值, 默認(rèn)名是host_name.log。所有連接和語(yǔ)句被記錄到日志文件。當(dāng)你懷疑在客戶端發(fā)生了錯(cuò)誤并想確切地知道該客戶端發(fā)送給mysqld的語(yǔ)句時(shí),該日志可能非常有用。

mysqld按照它接收的順序記錄語(yǔ)句到查詢?nèi)罩?。這可能與執(zhí)行的順序不同。這與更新日志和二進(jìn)制日志不同,它們?cè)诓樵儓?zhí)行后,但是任何一個(gè)鎖釋放之前記錄日志。(查詢?nèi)罩具€包含所有語(yǔ)句,而二進(jìn)制日志不包含只查詢數(shù)據(jù)的語(yǔ)句)。

服務(wù)器重新啟動(dòng)和日志刷新不會(huì)產(chǎn)生新的一般查詢?nèi)罩疚募?盡管刷新關(guān)閉并重新打開一般查詢?nèi)罩疚募?。在Unix中,你可以通過(guò)下面的命令重新命名文件并創(chuàng)建一個(gè)新文件:

復(fù)制代碼 代碼如下:

shell> mv hostname.log hostname-old.log
shell> mysqladmin flush-logs
shell> cp hostname-old.log to-backup-directory
shell> rm hostname-old.log

慢速查詢?nèi)罩?/strong>

用--log-slow-queries[=file_name]選項(xiàng)啟動(dòng)時(shí),mysqld寫一個(gè)包含所有執(zhí)行時(shí)間超過(guò)long_query_time秒的SQL語(yǔ)句的日志文件。獲得初使表鎖定的時(shí)間不算作執(zhí)行時(shí)間。

如果沒(méi)有給出file_name值, 默認(rèn)未主機(jī)名,后綴為-slow.log。如果給出了文件名,但不是絕對(duì)路徑名,文件則寫入數(shù)據(jù)目錄。

語(yǔ)句執(zhí)行完并且所有鎖釋放后記入慢查詢?nèi)罩?。記錄順序可以與執(zhí)行順序不相同。

慢查詢?nèi)罩究梢杂脕?lái)找到執(zhí)行時(shí)間長(zhǎng)的查詢,可以用于優(yōu)化。但是,檢查又長(zhǎng)又慢的查詢?nèi)罩緯?huì)很困難。要想容易些,你可以使用mysqldumpslow命令獲得日志中顯示的查詢摘要來(lái)處理慢查詢?nèi)罩尽?/p>

在MySQL 5.1的慢查詢?nèi)罩局?,不使用索引的慢查詢同使用索引的查詢一樣記錄。要想防止不使用索引的慢查詢記入慢查詢?nèi)罩?,使?-log-short-format選項(xiàng)。

在MySQL 5.1中,通過(guò)--log-slow-admin-statements服務(wù)器選項(xiàng),你可以請(qǐng)求將慢管理語(yǔ)句,例如OPTIMIZE TABLE、ANALYZE TABLE和 ALTER TABLE寫入慢查詢?nèi)罩尽?/p>

用查詢緩存處理的查詢不加到慢查詢?nèi)罩局?,因?yàn)楸碛辛阈谢蛞恍卸荒軓乃饕惺芤娴牟樵円膊粚懭肼樵內(nèi)罩尽?/p>

二進(jìn)制日志

二進(jìn)制文件介紹

二進(jìn)制日志以一種更有效的格式,并且是事務(wù)安全的方式包含更新日志中可用的所有信息。

二進(jìn)制日志包含了所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)(例如,沒(méi)有匹配任何行的一個(gè)DELETE)的所有語(yǔ)句。語(yǔ)句以“事件”的形式保存,它描述數(shù)據(jù)更改。

備注:二進(jìn)制日志已經(jīng)代替了老的更新日志,更新日志在MySQL 5.1中不再使用。

二進(jìn)制文件的行為

二進(jìn)制日志還包含關(guān)于每個(gè)更新數(shù)據(jù)庫(kù)的語(yǔ)句的執(zhí)行時(shí)間信息。它不包含沒(méi)有修改任何數(shù)據(jù)的語(yǔ)句。如果你想要記錄所有語(yǔ)句(例如,為了識(shí)別有問(wèn)題的查詢),你應(yīng)使用一般查詢?nèi)罩尽?/p>

二進(jìn)制日志的主要目的是在恢復(fù)使能夠最大可能地更新數(shù)據(jù)庫(kù),因?yàn)槎M(jìn)制日志包含備份后進(jìn)行的所有更新。

二進(jìn)制日志還用于在主復(fù)制服務(wù)器上記錄所有將發(fā)送給從服務(wù)器的語(yǔ)句。

運(yùn)行服務(wù)器時(shí)若啟用二進(jìn)制日志則性能大約慢1%。但是,二進(jìn)制日志的好處,即用于恢復(fù)并允許設(shè)置復(fù)制超過(guò)了這個(gè)小小的性能損失。

二進(jìn)制文件的文件路徑

當(dāng)用--log-bin[=file_name]選項(xiàng)啟動(dòng)時(shí),mysqld寫入包含所有更新數(shù)據(jù)的SQL命令的日志文件。如果未給出file_name值, 默認(rèn)名為-bin后面所跟的主機(jī)名。如果給出了文件名,但沒(méi)有包含路徑,則文件被寫入數(shù)據(jù)目錄。建議指定一個(gè)文件名.

如果你在日志名中提供了擴(kuò)展名(例如,--log-bin=file_name.extension),則擴(kuò)展名被悄悄除掉并忽略。

mysqld在每個(gè)二進(jìn)制日志名后面添加一個(gè)數(shù)字?jǐn)U展名。每次你啟動(dòng)服務(wù)器或刷新日志時(shí)該數(shù)字則增加。如果當(dāng)前的日志大小達(dá)到max_binlog_size,還會(huì)自動(dòng)創(chuàng)建新的二進(jìn)制日志。如果你正使用大的事務(wù),二進(jìn)制日志還會(huì)超過(guò)max_binlog_size:事務(wù)全寫入一個(gè)二進(jìn)制日志中,絕對(duì)不要寫入不同的二進(jìn)制日志中。

為了能夠知道還使用了哪個(gè)不同的二進(jìn)制日志文件,mysqld還創(chuàng)建一個(gè)二進(jìn)制日志索引文件,包含所有使用的二進(jìn)制日志文件的文件名。默認(rèn)情況下與二進(jìn)制日志文件的文件名相同,擴(kuò)展名為'.index'。你可以用--log-bin-index[=file_name]選項(xiàng)更改二進(jìn)制日志索引文件的文件名。當(dāng)mysqld在運(yùn)行時(shí),不應(yīng)手動(dòng)編輯該文件;如果這樣做將會(huì)使mysqld變得混亂。

二進(jìn)制日志選項(xiàng)

可以使用下面的mysqld選項(xiàng)來(lái)影響記錄到二進(jìn)制日志知的內(nèi)容。又見選項(xiàng)后面的討論。

--binlog-do-db=db_name

告訴主服務(wù)器,如果當(dāng)前的數(shù)據(jù)庫(kù)(即USE選定的數(shù)據(jù)庫(kù))是db_name,應(yīng)將更新記錄到二進(jìn)制日志中。其它所有沒(méi)有明顯指定的數(shù)據(jù)庫(kù)  被忽略。如果使用該選項(xiàng),你應(yīng)確保只對(duì)當(dāng)前的數(shù)據(jù)庫(kù)進(jìn)行更新。

對(duì)于CREATE DATABASE、ALTER DATABASE和DROP DATABASE語(yǔ)句,有一個(gè)例外,即通過(guò)操作的數(shù)據(jù)庫(kù)來(lái)決定是否應(yīng)記錄語(yǔ)句,而不是用當(dāng)前的數(shù)據(jù)庫(kù)。

一個(gè)不能按照期望執(zhí)行的例子:如果用binlog-do-db=sales啟動(dòng)服務(wù)器,并且執(zhí)行USE prices; UPDATE sales.january SET amount=amount+1000;,該語(yǔ)句不寫入二進(jìn)制日志。

--binlog-ignore-db=db_name

告訴主服務(wù)器,如果當(dāng)前的數(shù)據(jù)庫(kù)(即USE選定的數(shù)據(jù)庫(kù))是db_name,不應(yīng)將更新保存到二進(jìn)制日志中。如果你使用該選項(xiàng),你應(yīng)確保只對(duì)當(dāng)前的數(shù)據(jù)庫(kù)進(jìn)行更新。

一個(gè)不能按照你期望的執(zhí)行的例子:如果服務(wù)器用binlog-ignore-db=sales啟動(dòng),并且執(zhí)行USE prices; UPDATE sales.january SET amount=amount+1000;,該語(yǔ)句不寫入二進(jìn)制日志。

類似于--binlog-do-db,對(duì)于CREATE DATABASE、ALTER DATABASE和DROP DATABASE語(yǔ)句,有一個(gè)例外,即通過(guò)操作的數(shù)據(jù)庫(kù)來(lái)決定是否應(yīng)記錄語(yǔ)句,而不是用當(dāng)前的數(shù)據(jù)庫(kù)。

要想記錄或忽視多個(gè)數(shù)據(jù)庫(kù),使用多個(gè)選項(xiàng),為每個(gè)數(shù)據(jù)庫(kù)指定相應(yīng)的選項(xiàng)。

服務(wù)器根據(jù)下面的規(guī)則對(duì)選項(xiàng)進(jìn)行評(píng)估,以便將更新記錄到二進(jìn)制日志中或忽視。請(qǐng)注意對(duì)于CREATE/ALTER/DROP DATABASE語(yǔ)句有一個(gè)例外。在這些情況下,根據(jù)以下規(guī)則,所創(chuàng)建、修改或刪除的數(shù)據(jù)庫(kù)將代替當(dāng)前的數(shù)據(jù)庫(kù)。

1.  是否有binlog-do-db或binlog-ignore-db規(guī)則?

·沒(méi)有:將語(yǔ)句寫入二進(jìn)制日志并退出。

·有:執(zhí)行下一步。

2.有一些規(guī)則(binlog-do-db或binlog-ignore-db或二者都有)。當(dāng)前有一個(gè)數(shù)據(jù)庫(kù)(USE是否選擇了數(shù)據(jù)庫(kù)?)?

·沒(méi)有:不要寫入語(yǔ)句,并退出。
·有:執(zhí)行下一步。

3.有當(dāng)前的數(shù)據(jù)庫(kù)。是否有binlog-do-db規(guī)則?

· 有:當(dāng)前的數(shù)據(jù)庫(kù)是否匹配binlog-do-db規(guī)則?

o有:寫入語(yǔ)句并退出。

o沒(méi)有:不要寫入語(yǔ)句,退出。

· No:執(zhí)行下一步。

4.有一些binlog-ignore-db規(guī)則。當(dāng)前的數(shù)據(jù)庫(kù)是否匹配binlog-ignore-db規(guī)則?

·有:不要寫入語(yǔ)句,并退出。
·沒(méi)有:寫入查詢并退出。

例如,只用binlog-do-db=sales運(yùn)行的服務(wù)器不將當(dāng)前數(shù)據(jù)庫(kù)不為sales的語(yǔ)句寫入二進(jìn)制日志(換句話說(shuō),binlog-do-db有時(shí)可以表示“忽視其它數(shù)據(jù)庫(kù)”)。

如果你正進(jìn)行復(fù)制,應(yīng)確保沒(méi)有從服務(wù)器在使用舊的二進(jìn)制日志文件,方可刪除它們。

相關(guān)文章

最新評(píng)論

富民县| 康马县| 潍坊市| 温宿县| 平定县| 罗平县| 凤庆县| 永年县| 米泉市| 双江| 赤壁市| 高密市| 翼城县| 陇西县| 佛山市| 临泉县| 江华| 边坝县| 澳门| 黑水县| 博乐市| 长泰县| 商丘市| 科技| 林州市| 河北区| 诸城市| 梁平县| 宝山区| 许昌市| 罗平县| 饶阳县| 上饶市| 东乡族自治县| 昭通市| 于田县| 禄劝| 裕民县| 吐鲁番市| 公主岭市| 海阳市|