欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

日志文件類型

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

日志文件

記入文件中的信息類型

錯誤日志

記錄啟動、運行或停止mysqld時出現(xiàn)的問題。

查詢日志

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

更新日志

記錄更改數據的語句。不贊成使用該日志。

二進制日志

記錄所有更改數據的語句。還用于復制。

慢日志

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

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

錯誤日志

錯誤日志文件包含了當mysqld啟動和停止時,以及服務器在運行過程中發(fā)生任何嚴重錯誤時的相關信息。

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

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

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

如果不指定--log-error,或者(在Windows中)如果你使用--console選項,錯誤被寫入標準錯誤輸出stderr。通常標準輸出為你的終端。

通用查詢日志

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

mysqld按照它接收的順序記錄語句到查詢日志。這可能與執(zhí)行的順序不同。這與更新日志和二進制日志不同,它們在查詢執(zhí)行后,但是任何一個鎖釋放之前記錄日志。(查詢日志還包含所有語句,而二進制日志不包含只查詢數據的語句)。

服務器重新啟動和日志刷新不會產生新的一般查詢日志文件(盡管刷新關閉并重新打開一般查詢日志文件)。在Unix中,你可以通過下面的命令重新命名文件并創(chuàng)建一個新文件:

復制代碼 代碼如下:

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寫一個包含所有執(zhí)行時間超過long_query_time秒的SQL語句的日志文件。獲得初使表鎖定的時間不算作執(zhí)行時間。

如果沒有給出file_name值, 默認未主機名,后綴為-slow.log。如果給出了文件名,但不是絕對路徑名,文件則寫入數據目錄。

語句執(zhí)行完并且所有鎖釋放后記入慢查詢日志。記錄順序可以與執(zhí)行順序不相同。

慢查詢日志可以用來找到執(zhí)行時間長的查詢,可以用于優(yōu)化。但是,檢查又長又慢的查詢日志會很困難。要想容易些,你可以使用mysqldumpslow命令獲得日志中顯示的查詢摘要來處理慢查詢日志。

在MySQL 5.1的慢查詢日志中,不使用索引的慢查詢同使用索引的查詢一樣記錄。要想防止不使用索引的慢查詢記入慢查詢日志,使用--log-short-format選項。

在MySQL 5.1中,通過--log-slow-admin-statements服務器選項,你可以請求將慢管理語句,例如OPTIMIZE TABLE、ANALYZE TABLE和 ALTER TABLE寫入慢查詢日志。

用查詢緩存處理的查詢不加到慢查詢日志中,因為表有零行或一行而不能從索引中受益的查詢也不寫入慢查詢日志。

二進制日志

二進制文件介紹

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

二進制日志包含了所有更新了數據或者已經潛在更新了數據(例如,沒有匹配任何行的一個DELETE)的所有語句。語句以“事件”的形式保存,它描述數據更改。

備注:二進制日志已經代替了老的更新日志,更新日志在MySQL 5.1中不再使用。

二進制文件的行為

二進制日志還包含關于每個更新數據庫的語句的執(zhí)行時間信息。它不包含沒有修改任何數據的語句。如果你想要記錄所有語句(例如,為了識別有問題的查詢),你應使用一般查詢日志。

二進制日志的主要目的是在恢復使能夠最大可能地更新數據庫,因為二進制日志包含備份后進行的所有更新。

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

運行服務器時若啟用二進制日志則性能大約慢1%。但是,二進制日志的好處,即用于恢復并允許設置復制超過了這個小小的性能損失。

二進制文件的文件路徑

當用--log-bin[=file_name]選項啟動時,mysqld寫入包含所有更新數據的SQL命令的日志文件。如果未給出file_name值, 默認名為-bin后面所跟的主機名。如果給出了文件名,但沒有包含路徑,則文件被寫入數據目錄。建議指定一個文件名.

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

mysqld在每個二進制日志名后面添加一個數字擴展名。每次你啟動服務器或刷新日志時該數字則增加。如果當前的日志大小達到max_binlog_size,還會自動創(chuàng)建新的二進制日志。如果你正使用大的事務,二進制日志還會超過max_binlog_size:事務全寫入一個二進制日志中,絕對不要寫入不同的二進制日志中。

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

二進制日志選項

可以使用下面的mysqld選項來影響記錄到二進制日志知的內容。又見選項后面的討論。

--binlog-do-db=db_name

告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,應將更新記錄到二進制日志中。其它所有沒有明顯指定的數據庫  被忽略。如果使用該選項,你應確保只對當前的數據庫進行更新。

對于CREATE DATABASE、ALTER DATABASE和DROP DATABASE語句,有一個例外,即通過操作的數據庫來決定是否應記錄語句,而不是用當前的數據庫。

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

--binlog-ignore-db=db_name

告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,不應將更新保存到二進制日志中。如果你使用該選項,你應確保只對當前的數據庫進行更新。

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

類似于--binlog-do-db,對于CREATE DATABASE、ALTER DATABASE和DROP DATABASE語句,有一個例外,即通過操作的數據庫來決定是否應記錄語句,而不是用當前的數據庫。

要想記錄或忽視多個數據庫,使用多個選項,為每個數據庫指定相應的選項。

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

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

·沒有:將語句寫入二進制日志并退出。

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

2.有一些規(guī)則(binlog-do-db或binlog-ignore-db或二者都有)。當前有一個數據庫(USE是否選擇了數據庫?)?

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

3.有當前的數據庫。是否有binlog-do-db規(guī)則?

· 有:當前的數據庫是否匹配binlog-do-db規(guī)則?

o有:寫入語句并退出。

o沒有:不要寫入語句,退出。

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

4.有一些binlog-ignore-db規(guī)則。當前的數據庫是否匹配binlog-ignore-db規(guī)則?

·有:不要寫入語句,并退出。
·沒有:寫入查詢并退出。

例如,只用binlog-do-db=sales運行的服務器不將當前數據庫不為sales的語句寫入二進制日志(換句話說,binlog-do-db有時可以表示“忽視其它數據庫”)。

如果你正進行復制,應確保沒有從服務器在使用舊的二進制日志文件,方可刪除它們。

相關文章

  • mysql中Table is read only的解決方法小結

    mysql中Table is read only的解決方法小結

    本文章總結了關于在linux與windows中 mysql出現(xiàn)Table is read only解決辦法總結,有需要的朋友可參考一下
    2013-01-01
  • MySQL學習筆記2:數據庫的基本操作(創(chuàng)建刪除查看)

    MySQL學習筆記2:數據庫的基本操作(創(chuàng)建刪除查看)

    我們所安裝的MySQL說白了是一個數據庫的管理工具,真正有價值的東西在于數據關系型數據庫的數據是以表的形式存在的,N個表匯總在一起就成了一個數據庫現(xiàn)在來看看數據庫的基本操作
    2013-01-01
  • mysql中截取字符串的6個函數講解

    mysql中截取字符串的6個函數講解

    這篇文章主要介紹了mysql中截取字符串的6個函數講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • mysql使用instr達到in(字符串)的效果

    mysql使用instr達到in(字符串)的效果

    本文主要介紹了mysql使用instr達到in(字符串)的效果,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Mysql數據庫百萬級數據測試索引效果

    Mysql數據庫百萬級數據測試索引效果

    這篇文章主要為大家介紹了Mysql數據庫百萬數據測試索引效果,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • MySQL8.0連接協(xié)議及3306、33060、33062端口的作用解析

    MySQL8.0連接協(xié)議及3306、33060、33062端口的作用解析

    這篇文章主要介紹了MySQL8.0連接協(xié)議及3306、33060、33062端口的作用解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • MySQL并發(fā)更新數據時的處理方法

    MySQL并發(fā)更新數據時的處理方法

    在后端開發(fā)中我們不可避免的會遇見MySQL數據并發(fā)更新的情況,作為一名后端研發(fā),如何解決這類問題也是必須要知道的,同時這也是面試中經??疾斓闹R點。
    2019-05-05
  • 如何查看自己電腦MySQL是否安裝成功

    如何查看自己電腦MySQL是否安裝成功

    執(zhí)行mysql程序后我們需要對mysql數據庫進行驗證,檢查其是否安裝成功,這篇文章主要給大家介紹了關于如何查看自己電腦MySQL是否安裝成功的相關資料,需要的朋友可以參考下
    2023-11-11
  • 通過mysql show processlist 命令檢查mysql鎖的方法

    通過mysql show processlist 命令檢查mysql鎖的方法

    show processlist 命令非常實用,有時候mysql經常跑到50%以上或更多,就需要用這個命令看哪個sql語句占用資源比較多,就知道哪個網站的程序問題了。
    2010-03-03
  • MySQL中varchar和char類型的區(qū)別

    MySQL中varchar和char類型的區(qū)別

    VARCHAR和CHAR是兩種最主要的字符串類型。那么MySQL中varchar和char類型的區(qū)別是什么,本文就具體來介紹一下,感興趣的可以了解一下
    2021-11-11

最新評論