MySQL 7种日志类型 详解
生活随笔
收集整理的這篇文章主要介紹了
MySQL 7种日志类型 详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MySQL除了有些表類型會用到事務日志外,還使用了7種日志文件,這些日志文件都是可選項。
1. 二進制日志 二進制日志存儲修改數據庫中表數據的所有動作,包含了所有更新了數據或者已經潛在更新了數據的所有語句。潛在跟新了數據的SQL語句例如:無法匹配行的DELETE語句;設置列為當前值的UPDATE語句。除此之外,該日志還存儲了語句執行期間耗時的相關信息。二進制日志文件以一種更有效并且是事務安全的方式包含更新日志中可用的所有信息。MySQL在執行語句之后,但在釋放鎖之前,馬上將修改寫入二進制日志中, ?????? 使用–log-bin[=file_name]選項啟動該日志類型,mysqld寫入包含所有更新數據的SQL命令的日志文件。如果未給出file_name值,默認名為“HOSTNAME-bin.nnnnn”;如果給出了文件名,但沒有包含路徑,則文件被寫入數據目錄。如果在日志名中提供了擴展名(例如,–log-bin=file_name.extension),則擴展名被悄悄除掉并忽略。二進制日志文件名的.nnnn表示,mysqld在每個二進制日志名后面添加一個數字擴展名。每次啟動服務器或刷新日志(flush logs)時該數字增加1。如果當前的日志大小達到設定的max_binlog_size,還會自動創建新的二進制日志。如果在該文件的末尾正使用大的事務,二進制日志還有肯呢個會超過max_binlog_size:事務全寫入一個二進制日志中,絕對不要寫入不同的二進制日志中。?????? –binlog-do-db=db_name 告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,應將更新記錄到二進制日志中。其它所有沒有明顯指定的數據庫被忽略。 如果數據庫啟動時使用選項–binlog-do-db=DB_A,使用語句“use DB_B”置DB_B為當前數據庫,此時使用update語句修改DB_A的表數據時出現如下情況: 數據庫DB_B不在允許binlog的列表內,該語句不寫入二進制日志文件 數據庫DB_B在允許binlog的列表內,該語句寫入二進制日志文件 –binlog-ignore-db=db_name 告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,不將更新保存到二進制日志中。 綜上所述,使用這個兩個選項時決定是否將該語句寫入日志文件還有參考當前數據庫的屬性,如果指定了這兩個選項盡量使指定的數據庫為當前數據庫,才能按照邏輯來記錄日志。但CREATE DATABASE、ALTER DATABASE和DROP DATABASE等語句,有一個例外,即通過操作的數據庫來決定是否應記錄語句。 2.調試日志 如果使用調試的方式來編譯MySQL客戶機或服務器,則可以生成一個調試日志文件。默認情況下,MySQL將調試日志寫到/tmp/mysql.trace,也可以使用debug命令行選項來修改該位置。 3.????錯誤日志 該日志文件包含了當mysqld啟動和停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息。可以用–log-error[=file_name]選項來指定mysqld保存錯誤日志文件的位置。 當使用mysqld_safe啟動服務器時,該腳本自動在啟動項上加上–log-error但沒有加上file_name,或者直接在libexec目錄下使用./mysqld –user=mysql –log-error啟動服務器,此時沒有給定file_name值,mysqld將使用錯誤日志名host_name.err 并在數據目錄中寫入日志文件。 將錯誤信息寫入錯誤日志文件的原理是,服務器將對標準錯誤輸出重定向到該日志文件,所以如果不指定–log-error,錯誤被寫入標準錯誤輸出stderr,通常標準輸出為你的終端。如果在程序中有printf等語句的話,這些函數打印出的信息也被寫入該日志文件。 如果執行FLUSH LOGS,錯誤日志用-old重新命名后綴并且mysqld創建一個新的空日志文件。如第一次生成的錯誤日志為:linux-8tpn.err。執行該命令后將該文件重命名為:linux-8tpn.err-old。 4.????MyISAM日志 該日志文件供MySQL開發小組使用該日志來調試MyISAM表處理器。使用–log-isam選項開啟該日志類型,服務器在數據目錄下創建myisam.log文件。 可以使用myisamlog使用程序從myisam.log文件中提取統計信息,除非用戶正在調試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以上,系統已經不在支持該日志類型,取而代之的是二進制日志。
轉載于:https://blog.51cto.com/machael/210474
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的MySQL 7种日志类型 详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不要一辈子靠技术生存!!
- 下一篇: (转)SQL 查找重复记录