自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL的監(jiān)控原理

數(shù)據(jù)庫 MySQL
MySQL的日志文件有哪些類型呢? MySQL使用以下這幾種類型的日志來記錄服務(wù)器活動(dòng)信息。

MySQL的監(jiān)控通過日志文件來實(shí)現(xiàn)。

[[424797]]

那么MySQL的日志文件有哪些類型呢? MySQL使用以下這幾種類型的日志來記錄服務(wù)器活動(dòng)信息。

  • Error log錯(cuò)誤日志:關(guān)于啟動(dòng)、關(guān)閉和異常情況的診斷消息(排查錯(cuò)誤)
  • General query log通用查詢?nèi)罩?服務(wù)器從客戶端接收到的所有語句(全局監(jiān)控)
  • Slow query log慢速查詢?nèi)罩?執(zhí)行時(shí)間較長的查詢(性能優(yōu)化)
  • Audit log審計(jì)日志:針對企業(yè)版的策略審計(jì)(主從搭配)
  • Binary log二進(jìn)制日志:用于修改數(shù)據(jù)(備份用的到)

這5個(gè)類型的日志文件涵蓋了所有MySQL的運(yùn)行記錄,是將來排查問題,優(yōu)化性能的重要依據(jù)。很多經(jīng)驗(yàn)豐富的DBA遇到問題就是先從這些日志文件下手分析的。重點(diǎn)之重,要考的。

日志文件的特點(diǎn):占用大量的磁盤空間,存儲在文件中,也可以存儲在表中,但只有Slow query log慢速查詢?nèi)罩竞虶eneral query log通用查詢?nèi)罩臼强梢源鎯υ诒碇???梢杂梦谋靖袷綍鴮?,但Binary log二進(jìn)制日志除外。(因?yàn)锽inary log中都是二進(jìn)制格式啊!)

Error log錯(cuò)誤日志:設(shè)置文件名set- -log- Error =filename來記錄錯(cuò)誤到給定的文件?;蛘咴? UNIX或基于UNIX的系統(tǒng)中使用- -log-syslog服務(wù)器選項(xiàng)將錯(cuò)誤消息發(fā)送到syslog系統(tǒng)日志上。

General query log通用查詢?nèi)罩?設(shè)置文件名set- -general_log_file=filename為日志查詢。全局general_log和general_log_file服務(wù)器變量提供了對通用查詢?nèi)罩镜倪\(yùn)行時(shí)控制。將general_log設(shè)置為0(或OFF)以禁用日志,或設(shè)置為1(或ON)以啟用日志。

Slow query log慢速查詢?nèi)罩?設(shè)置文件名set- -slow_query_log_file=filename以提供對慢速查詢?nèi)罩镜倪\(yùn)行時(shí)控制。設(shè)置slow_query_log為0禁用日志,設(shè)置為1啟用日志,如果日志文件已經(jīng)打開,則關(guān)閉該日志文件并打開新文件。

Binary log二進(jìn)制日志:設(shè)置Set --log-bin以啟用二進(jìn)制日志記錄。

服務(wù)器使用該選項(xiàng)值作為基本名稱,在創(chuàng)建新日志文件時(shí)向基本名稱添加一個(gè)遞增的連續(xù)數(shù)字后綴。這些日志文件以二進(jìn)制格式而不是文本格式存儲。

Audit log審計(jì)日志:審計(jì)日志作為Enterprise Edition插件提供,當(dāng)加載時(shí),您可以使用該插件將事件記錄到audit_log_file選項(xiàng)指定的文件中。審計(jì)不斷寫入審計(jì)日志,直到您刪除插件,或者使用audit_log_policy=NONE選項(xiàng)設(shè)置關(guān)閉審計(jì)。通過在服務(wù)器啟動(dòng)時(shí)使用audit_log=FORCE_PLUS_PERMANENT作為選項(xiàng)來防止刪除插件。

接下來我們逐個(gè)講解

General query log通用查詢?nèi)罩究梢允褂胓eneral_log服務(wù)器選項(xiàng)啟用,它是用來記錄所執(zhí)行語句的連接信息和詳細(xì)信息。包括記錄每個(gè)連接的時(shí)間和類型以及所有操作的進(jìn)程ID,記錄對所有表執(zhí)行的所有語句,但不包括存儲在二進(jìn)制日志的更新操作行變化,因?yàn)檫@些不是更新操作以語句形式被存儲的。而且General query log通用查詢?nèi)罩緮U(kuò)張的很快,但是如果以一個(gè)短時(shí)間內(nèi)啟用它,可以收集這些時(shí)間內(nèi)所有活動(dòng)的完整記錄。

具體記錄了些什么,我們在此舉例說明,請看下面: 

  1. 1424 Query /* mem dbpool.default */ update 
  2.  
  3. `mem__events`.events set lastUpdateTime=1397633565708 where id=7 1429 Query /* mem dbpool.default */ update `mem__events`.events set lastUpdateTime=1397633565708 where id=4970 1424 Query /* mem dbpool.default */ commit 1429 Query /* mem dbpool.default */ commit 150526 7:32:46 1434 Connect root@localhost on mysql 1434 Query SET NAMES latin1 1434 Query SET character_set_results = NULL 

里面包含事件類型和查詢內(nèi)容,示例類型:查詢、連接。

上面代碼顯示每個(gè)連接和查詢的詳細(xì)信息,記錄每次連接的時(shí)間和所有操作的進(jìn)程號。

Slow query log慢速查詢?nèi)罩究梢酝ㄟ^使用slow_query_log服務(wù)器選項(xiàng)啟用。用于記錄執(zhí)行時(shí)間超過指定閾值的語句。一般設(shè)定10秒(默認(rèn)),可以使用long_query_time server選項(xiàng)更改此持續(xù)時(shí)間??梢灾付ㄎ⒚刖鹊拿霐?shù)??梢杂涗洸皇褂盟饕恼Z句,甚至是long_query_time下面的語句。比如用log_queries_not_using_indexes來實(shí)現(xiàn)??梢允褂胢ysqldumpslow命令行程序查看Slow query log慢速查詢?nèi)罩尽?/p>

Slow query log慢速查詢?nèi)罩臼怯涗浌芾砗蛷?fù)制語句。但默認(rèn)情況下,慢速查詢?nèi)罩静挥涗浌芾碚Z句??梢酝ㄟ^啟用log_slow_admin_statements服務(wù)器選項(xiàng)來記錄這些語句。默認(rèn)情況下,從復(fù)制主機(jī)復(fù)制的語句不會出現(xiàn)在慢速查詢?nèi)罩局?,即使它們超過了long_query_time服務(wù)器選項(xiàng)指定的時(shí)間。此時(shí)可以要記錄這些語句,請啟用log_slow_slave_statements服務(wù)器選項(xiàng)來實(shí)現(xiàn)。

如何過濾慢速查詢?nèi)罩臼录?這有兩個(gè)額外的服務(wù)器選項(xiàng),您可以使用來過濾緩慢的查詢?nèi)罩据敵?

第一個(gè)min_examined_row_limit:指定語句必須檢查的最低行數(shù),以便慢速查詢?nèi)罩居涗浽撜Z句。

第二個(gè)log_throttle_queries_not_using_indexes:它指定慢速查詢在60秒內(nèi)記錄的查詢數(shù)量,因?yàn)樗鼈儾皇褂盟饕?。慢速查詢?nèi)罩居涗浟诉@些查詢的數(shù)量后,它匯總了在該時(shí)間段內(nèi)花費(fèi)在其余語句上的數(shù)量和總時(shí)間。默認(rèn)情況下,該服務(wù)器選項(xiàng)的值為0,表示它記錄所有此類查詢。

舉例說明: 

  1. Timedate-and-time # User@Host: root[root] @ localhost [127.0.0.1] Id: 7694 # Query_time: 1.010099 Lock_time: 0.000023 Rows_sent: 0 Rows_examined: 1 SET timestamp=timestamp; /* mem dbpool.default */ update `mem__inventory`.`MysqlServer` set `timestamp`=timestamp where hid=x'08310BA6528CBF5783BBD95CE5B4561F'

例子包括服務(wù)器日期和時(shí)間,連接和查詢信息,運(yùn)行查詢和持有鎖的時(shí)間。

我們使用mysqldumpslow查看慢速查詢?nèi)罩?,mysqldumpslow命令行程序總結(jié)了慢速查詢?nèi)罩镜膬?nèi)容。它將類似的查詢分組在一起,例如將數(shù)值參數(shù)更改為N,將字符串參數(shù)更改為'S',顯示此類查詢的數(shù)量以及運(yùn)行查詢所需的平均時(shí)間和總時(shí)間。使用-g選項(xiàng)提供一個(gè)搜索詞,僅顯示匹配搜索項(xiàng)的語句的摘要信息。也可以通過設(shè)定log_output服務(wù)器選項(xiàng)來指定表或文件日志輸出。。

log_output服務(wù)器選項(xiàng)是用來配置慢速查詢?nèi)罩竞屯ㄓ貌樵內(nèi)罩?。它包含一個(gè)或多個(gè)FILE、TABLE或NONE值(以逗號分隔)。默認(rèn)情況下,它的值為FILE。NONE代表日志既不寫文件,也不寫表。NONE的存在會導(dǎo)致忽略FILE或TABLE。FILE表示日志分別寫入由slow_query_log_file和general_log_file MySQL服務(wù)器選項(xiàng)指定的文件。在MySQL數(shù)據(jù)目錄文件中的缺省值為hostname-slow.log和hostname.log。TABLE表示在mysql數(shù)據(jù)庫中,慢速查詢?nèi)罩緦懙絪low_log表,常規(guī)日志寫到general_log表。

隨著時(shí)間的推移,日志文件會占用更大的空間。定期備份和刪除舊的日志文件,并重新記錄到新的日志文件是DBA的日常工作之一。注意,如果使用二進(jìn)制日志進(jìn)行復(fù)制,請謹(jǐn)慎使用。備份后,刷新日志。刷新日志需要注意

1. 創(chuàng)建新的二進(jìn)制日志文件

2. 關(guān)閉并重新打開常規(guī)和慢速查詢?nèi)罩疚募?。在?chuàng)建新日志時(shí),必須在刷新之前重命名當(dāng)前日志文件。

可以創(chuàng)建自己的腳本或使用提供的mysql-log-rotate腳本來實(shí)現(xiàn)定期安排日志文件的循環(huán)。備份日志文件后,刷新日志以強(qiáng)制MySQL服務(wù)器開始寫入新的日志文件??梢酝ㄟ^執(zhí)行FLUSH LOGS SQL語句或執(zhí)行mysqladmin flush-logs來實(shí)現(xiàn)。在刷新二進(jìn)制日志會導(dǎo)致二進(jìn)制日志記錄順序中的下一個(gè)文件重新開始。刷新普通和慢速查詢?nèi)罩緯r(shí),這將關(guān)閉日志文件,重新打開它們,然后在相同的文件名下重新進(jìn)行日志記錄,要啟動(dòng)新的日志,請?jiān)谒⑿轮爸孛F(xiàn)有的日志文件。

 

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2022-11-08 00:00:00

監(jiān)控系統(tǒng)Prometheus

2024-09-04 08:09:51

2015-09-15 15:41:09

監(jiān)控寶Docker

2011-03-25 09:34:34

Nagios網(wǎng)絡(luò)監(jiān)控

2011-03-24 10:59:09

Nagios監(jiān)控Mysql

2023-08-03 08:03:05

2021-01-19 12:00:39

前端監(jiān)控代碼

2015-12-11 11:49:19

java

2015-12-11 11:39:15

.net代碼

2022-09-05 08:39:04

kubernetesk8s

2011-04-06 14:24:28

nagios監(jiān)控Linux

2010-05-19 13:29:59

2022-09-14 23:04:10

MySQL監(jiān)控?cái)?shù)據(jù)數(shù)據(jù)庫

2015-12-11 14:02:02

php應(yīng)用

2024-08-07 09:22:57

2024-10-07 10:02:28

2011-09-15 09:33:20

自動(dòng)監(jiān)控MySQL同步

2011-04-01 16:30:49

cacti監(jiān)控Mysql

2011-04-01 16:40:00

2022-01-11 14:25:46

前端監(jiān)控SDK
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號