Mysql日記文件和日記類型引見。本站提示廣大學習愛好者:(Mysql日記文件和日記類型引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql日記文件和日記類型引見正文
日記文件類型
MySQL有幾個分歧的日記文件,可以贊助你找出mysqld外部產生的工作:
日記文件
記入文件中的信息類型
毛病日記
記載啟動、運轉或停滯mysqld時湧現的成績。
查詢日記
記載樹立的客戶端銜接和履行的語句。
更新日記
記載更改數據的語句。不贊同應用該日記。
二進制日記
記載一切更改數據的語句。還用於復制。
慢日記
記載一切履行時光跨越long_query_time秒的一切查詢或不應用索引的查詢。
默許情形下,一切日記創立於mysqld數據目次中。經由過程刷新日記,你可以強迫 mysqld來封閉和從新翻開日記文件(或許在某些情形下切換到一個新的日記)。當你履行一個FLUSH LOGS語句或履行mysqladmin flush-logs或mysqladmin refresh時,湧現日記刷新。
毛病日記
毛病日記文件包括了當mysqld啟動和停滯時,和辦事器在運轉進程中產生任何嚴重毛病時的相干信息。
假如mysqld莫明其妙地逝世失落而且mysqld_safe須要從新啟動它,mysqld_safe在毛病日記中寫入一條restarted mysqld新聞。假如mysqld留意到須要主動檢討或著修復一個表,則毛病日記中寫入一條新聞。
在一些操作體系中,假如mysqld逝世失落,毛病日記包括客棧跟蹤信息。跟蹤信息可以用來肯定mysqld逝世失落的處所。
可以用--log-error[=file_name]選項來指定mysqld保留毛病日記文件的地位。假如沒有給定file_name值,mysqld應用毛病日記名host_name.err 並在數據目次中寫入日記文件。假如你履行FLUSH LOGS,毛病日記用-old從新定名後綴而且mysqld創立一個新的空日記文件。(假如未給出--log-error選項,則不會從新定名)。
假如不指定--log-error,或許(在Windows中)假如你應用--console選項,毛病被寫入尺度毛病輸入stderr。平日尺度輸入為你的終端。
通用查詢日記
假如你想要曉得mysqld外部產生了甚麼,你應當用--log[=file_name]或-l [file_name]選項啟動它。假如沒有給定file_name的值, 默許名是host_name.log。一切銜接和語句被記載到日記文件。當你疑惑在客戶端產生了毛病並想確實地曉得該客戶端發送給mysqld的語句時,該日記能夠異常有效。
mysqld依照它吸收的次序記載語句到查詢日記。這能夠與履行的次序分歧。這與更新日記和二進制日記分歧,它們在查詢履行後,然則任何一個鎖釋放之前記載日記。(查詢日記還包括一切語句,而二進制日記不包括只查詢數據的語句)。
辦事重視新啟動和日記刷新不會發生新的普通查詢日記文件(雖然刷新封閉偏重新翻開普通查詢日記文件)。在Unix中,你可以經由過程上面的敕令從新定名文件並創立一個新文件:
shell> mv hostname.log hostname-old.log
shell> mysqladmin flush-logs
shell> cp hostname-old.log to-backup-directory
shell> rm hostname-old.log
慢速查詢日記
用--log-slow-queries[=file_name]選項啟動時,mysqld寫一個包括一切履行時光跨越long_query_time秒的SQL語句的日記文件。取得初使表鎖定的時光不算作履行時光。
假如沒有給出file_name值, 默許未主機名,後綴為-slow.log。假如給出了文件名,但不是相對途徑名,文件則寫入數據目次。
語句履行完而且一切鎖釋放跋文入慢查詢日記。記載次序可以與履行次序不雷同。
慢查詢日記可以用來找到履行時光長的查詢,可以用於優化。然則,檢討又長又慢的查詢日記會很艱苦。要想輕易些,你可使用mysqldumpslow敕令取得日記中顯示的查詢摘要來處置慢查詢日記。
在MySQL 5.1的慢查詢日記中,不應用索引的慢查詢同應用索引的查詢一樣記載。要想避免不應用索引的慢查詢記入慢查詢日記,應用--log-short-format選項。
在MySQL 5.1中,經由過程--log-slow-admin-statements辦事器選項,你可以要求將慢治理語句,例如OPTIMIZE TABLE、ANALYZE TABLE和 ALTER TABLE寫入慢查詢日記。
用查詢緩存處置的查詢不加到慢查詢日記中,由於表有零行或一行而不克不及從索引中受害的查詢也不寫入慢查詢日記。
二進制日記
二進制文件引見
二進制日記以一種更有用的格局,而且是事務平安的方法包括更新日記中可用的一切信息。
二進制日記包括了一切更新了數據或許曾經潛伏更新了數據(例如,沒有婚配任何行的一個DELETE)的一切語句。語句以“事宜”的情勢保留,它描寫數據更改。
備注:二進制日記曾經取代了老的更新日記,更新日記在MySQL 5.1中不再應用。
二進制文件的行動
二進制日記還包括關於每一個更新數據庫的語句的履行時光信息。它不包括沒有修正任何數據的語句。假如你想要記載一切語句(例如,為了辨認有成績的查詢),你應應用普通查詢日記。
二進制日記的重要目標是在恢復使可以或許最年夜能夠地更新數據庫,由於二進制日記包括備份落後行的一切更新。
二進制日記還用於在主復禮服務器上記載一切將發送給從辦事器的語句。
運轉辦事器時若啟用二進制日記則機能年夜約慢1%。然則,二進制日記的利益,即用於恢復並許可設置復制跨越了這個小小的機能喪失。
二進制文件的文件途徑
當用--log-bin[=file_name]選項啟動時,mysqld寫入包括一切更新數據的SQL敕令的日記文件。假如未給出file_name值, 默許名為-bin前面所跟的主機名。假如給出了文件名,但沒有包括途徑,則文件被寫入數據目次。建議指定一個文件名.
假如你在日記名中供給了擴大名(例如,--log-bin=file_name.extension),則擴大名被靜靜除失落並疏忽。
mysqld在每一個二進制日記名前面添加一個數字擴大名。每次你啟動辦事器或刷新日記時該數字則增長。假如以後的日記年夜小到達max_binlog_size,還會主動創立新的二進制日記。假如你正應用年夜的事務,二進制日記還會跨越max_binlog_size:事務全寫入一個二進制日記中,相對不要寫入分歧的二進制日記中。
為了可以或許曉得還應用了哪一個分歧的二進制日記文件,mysqld還創立一個二進制日記索引文件,包括一切應用的二進制日記文件的文件名。默許情形下與二進制日記文件的文件名雷同,擴大名為'.index'。你可以用--log-bin-index[=file_name]選項更改二進制日記索引文件的文件名。當mysqld在運轉時,不該手動編纂該文件;假如如許做將會使mysqld變得凌亂。
二進制日記選項
可使用上面的mysqld選項來影響記載到二進制日記知的內容。又見選項前面的評論辯論。
--binlog-do-db=db_name
告知主辦事器,假如以後的數據庫(即USE選定的數據庫)是db_name,應將更新記載到二進制日記中。其它一切沒有顯著指定的數據庫 被疏忽。假如應用該選項,你應確保只對以後的數據庫停止更新。
關於CREATE DATABASE、ALTER DATABASE和DROP DATABASE語句,有一個破例,即經由過程操作的數據庫來決議能否應記載語句,而不是用以後的數據庫。
一個不克不及依照希冀履行的例子:假如用binlog-do-db=sales啟動辦事器,而且履行USE prices; UPDATE sales.january SET amount=amount+1000;,該語句不寫入二進制日記。
--binlog-ignore-db=db_name
告知主辦事器,假如以後的數據庫(即USE選定的數據庫)是db_name,不該將更新保留到二進制日記中。假如你應用該選項,你應確保只對以後的數據庫停止更新。
一個不克不及依照你希冀的履行的例子:假如辦事器用binlog-ignore-db=sales啟動,而且履行USE prices; UPDATE sales.january SET amount=amount+1000;,該語句不寫入二進制日記。
相似於--binlog-do-db,關於CREATE DATABASE、ALTER DATABASE和DROP DATABASE語句,有一個破例,即經由過程操作的數據庫來決議能否應記載語句,而不是用以後的數據庫。
要想記載或疏忽多個數據庫,應用多個選項,為每一個數據庫指定響應的選項。
辦事器依據上面的規矩對選項停止評價,以便將更新記載到二進制日記中或疏忽。請留意關於CREATE/ALTER/DROP DATABASE語句有一個破例。在這些情形下,依據以下規矩,所創立、修正或刪除的數據庫將取代以後的數據庫。
1. 能否有binlog-do-db或binlog-ignore-db規矩?
·沒有:將語句寫入二進制日記並加入。
·有:履行下一步。
2.有一些規矩(binlog-do-db或binlog-ignore-db或兩者都有)。以後有一個數據庫(USE能否選擇了數據庫?)?
·沒有:不要寫入語句,並加入。
·有:履行下一步。
3.有以後的數據庫。能否有binlog-do-db規矩?
· 有:以後的數據庫能否婚配binlog-do-db規矩?
o有:寫入語句並加入。
o沒有:不要寫入語句,加入。
· No:履行下一步。
4.有一些binlog-ignore-db規矩。以後的數據庫能否婚配binlog-ignore-db規矩?
·有:不要寫入語句,並加入。
·沒有:寫入查詢並加入。
例如,只用binlog-do-db=sales運轉的辦事器不將以後數據庫不為sales的語句寫入二進制日記(換句話說,binlog-do-db有時可以表現“疏忽其它數據庫”)。
假如你正停止復制,應確保沒有從辦事器在應用舊的二進制日記文件,方可刪除它們。