日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL 7种日志类型 详解

發(fā)布時間:2023/12/20 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 7种日志类型 详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MySQL除了有些表類型會用到事務(wù)日志外,還使用了7種日志文件,這些日志文件都是可選項。

1. 二進(jìn)制日志 二進(jìn)制日志存儲修改數(shù)據(jù)庫中表數(shù)據(jù)的所有動作,包含了所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)的所有語句。潛在跟新了數(shù)據(jù)的SQL語句例如:無法匹配行的DELETE語句;設(shè)置列為當(dāng)前值的UPDATE語句。除此之外,該日志還存儲了語句執(zhí)行期間耗時的相關(guān)信息。二進(jìn)制日志文件以一種更有效并且是事務(wù)安全的方式包含更新日志中可用的所有信息。MySQL在執(zhí)行語句之后,但在釋放鎖之前,馬上將修改寫入二進(jìn)制日志中, ?????? 使用–log-bin[=file_name]選項啟動該日志類型,mysqld寫入包含所有更新數(shù)據(jù)的SQL命令的日志文件。如果未給出file_name值,默認(rèn)名為“HOSTNAME-bin.nnnnn”;如果給出了文件名,但沒有包含路徑,則文件被寫入數(shù)據(jù)目錄。如果在日志名中提供了擴(kuò)展名(例如,–log-bin=file_name.extension),則擴(kuò)展名被悄悄除掉并忽略。二進(jìn)制日志文件名的.nnnn表示,mysqld在每個二進(jìn)制日志名后面添加一個數(shù)字?jǐn)U展名。每次啟動服務(wù)器或刷新日志(flush logs)時該數(shù)字增加1。如果當(dāng)前的日志大小達(dá)到設(shè)定的max_binlog_size,還會自動創(chuàng)建新的二進(jìn)制日志。如果在該文件的末尾正使用大的事務(wù),二進(jìn)制日志還有肯呢個會超過max_binlog_size:事務(wù)全寫入一個二進(jìn)制日志中,絕對不要寫入不同的二進(jìn)制日志中。?????? –binlog-do-db=db_name 告訴主服務(wù)器,如果當(dāng)前的數(shù)據(jù)庫(USE選定的數(shù)據(jù)庫)db_name,應(yīng)將更新記錄到二進(jìn)制日志中。其它所有沒有明顯指定的數(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),該語句不寫入二進(jìn)制日志文件 數(shù)據(jù)庫DB_B在允許binlog的列表內(nèi),該語句寫入二進(jìn)制日志文件 –binlog-ignore-db=db_name 告訴主服務(wù)器,如果當(dāng)前的數(shù)據(jù)庫(USE選定的數(shù)據(jù)庫)db_name,不將更新保存到二進(jìn)制日志中。 綜上所述,使用這個兩個選項時決定是否將該語句寫入日志文件還有參考當(dāng)前數(shù)據(jù)庫的屬性,如果指定了這兩個選項盡量使指定的數(shù)據(jù)庫為當(dāng)前數(shù)據(jù)庫,才能按照邏輯來記錄日志。但CREATE DATABASEALTER DATABASEDROP 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
5.????查詢?nèi)罩?/span> ? 該日志文件記錄服務(wù)器上所做的所有查詢。可以使用–log[=file_name]-l [file_name]選項啟動它。如果沒有給定file_name的值, 默認(rèn)名是host_name.log;如果file_name為絕對路徑則在該目錄下創(chuàng)建日志文件,否則在數(shù)據(jù)目錄下創(chuàng)建該日志文件。 mysqld按照它接收的順序而不是按照語句執(zhí)行的順序記錄語句到查詢?nèi)罩尽_@就有可能與執(zhí)行的順序不同。與更新日志和二進(jìn)制日志不同,它們在查詢執(zhí)行后,但是任何一個鎖釋放之前記錄日志。(查詢?nèi)罩具€包含所有語句,而二進(jìn)制日志不包含只查詢數(shù)據(jù)的語句)。 服務(wù)器重新啟動和日志刷新不會產(chǎn)生新的一般查詢?nèi)罩疚募?/span>(盡管刷新關(guān)閉并重新打開一般查詢?nèi)罩疚募?/span>)。在所有日志類型中查詢?nèi)罩驹鲩L的最快,不要不間斷的運行查詢?nèi)罩尽?/span>
./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
6.????慢查詢?nèi)罩?/span> 該日志類型用來收集那些花費太長時間(超過指定時間)執(zhí)行的SQL語句,該指定時間由long_query_time服務(wù)器變量設(shè)定。用–log-slow-queries[=file_name]選項啟動,如果沒有給出file_name值,默認(rèn)未主機名,后綴為-slow.log,如果給出了文件名,但不是絕對路徑名,文件則寫入數(shù)據(jù)目錄。 慢查詢?nèi)罩究梢杂脕碚业綀?zhí)行時間長的查詢,可以用于優(yōu)化\,使用mysqldumpslow命令獲得日志中顯示的查詢摘要來處理慢查詢?nèi)罩尽?/span> MySQL 5.1,通過–log-slow-admin-statements服務(wù)器選項,可以請求將慢管理語句,例如OPTIMIZE TABLEANALYZE TABLE ALTER TABLE寫入慢查詢?nèi)罩尽?/span> MySQL 5.1的慢查詢?nèi)罩局?#xff0c;不使用索引的慢查詢同使用索引的查詢一樣記錄。要想防止不使用索引的慢查詢記入慢查詢?nèi)罩?#xff0c;使用–log-short-format選項。 使用–log-long-format選項,可以把不使用索引的查詢也加入到慢查詢?nèi)罩局小?/span> 注: [1] 獲得初使表鎖定的時間不算作執(zhí)行時間。 [2] 語句執(zhí)行完并且所有鎖釋放后記入慢查詢?nèi)罩尽S涗涰樞蚩梢耘c執(zhí)行順序不相同 [3] 用查詢緩存處理的查詢不加到慢查詢?nèi)罩局?#xff0c;因為表有零行或一行而不能從索引中受益的查詢也不寫入慢查詢?nèi)罩?/span> 7.????更新日志 更新日志提供查詢信息,但只有修改數(shù)據(jù)庫內(nèi)容的查詢。使用–log-update服務(wù)器選項,開啟更新日志。當(dāng)啟用該日志類型后,MySQL將在數(shù)據(jù)目錄下創(chuàng)建一個名稱為:HOSTNAME.nnn的文件。但在5.0以上的MySQL上使用該選項的時候,會有如下的提示:
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)不在支持該日志類型,取而代之的是二進(jìn)制日志。

轉(zhuǎn)載于:https://blog.51cto.com/machael/210474

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的MySQL 7种日志类型 详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。