本文主要給大家簡(jiǎn)單講講Mysql的主要幾種日志及慢查詢方法,相關(guān)專業(yè)術(shù)語(yǔ)大家可以上網(wǎng)查查或者找一些相關(guān)書籍補(bǔ)充一下,這里就不涉獵了,我們就直奔主題吧,希望Mysql的主要幾種日志及慢查詢方法這篇文章可以給大家?guī)?lái)一些實(shí)際幫助。
創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè)|網(wǎng)站維護(hù)公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都效果圖設(shè)計(jì)等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身策劃品質(zhì)網(wǎng)站。mysql日志主要有以下幾種:
l 錯(cuò)誤日志:log_error
l 通用查詢?nèi)罩荆篻eneral_log
l 二進(jìn)制日志:binlog
l 慢速查詢?nèi)罩荆簂og_slow_queries
l 中繼日志:relay_log
l 事務(wù)日志:innodb_log
由于版本的不同,以下的目錄文件目錄也有所不同。
1、錯(cuò)誤日志
【W(wǎng)indows下】 修改主配置文件my.ini
[mysqld]
Error-bin[=dir\[filename]]
//dir:指定錯(cuò)誤日志的存儲(chǔ)路徑;filename:指定錯(cuò)誤文件的文件名
刪除錯(cuò)誤日志:
Mysqladmin -u root -p flush-logs;
【Linux下】
修改主配置文件my.cnf
[mysqld]
log-error=mysql_error.log(絕對(duì)路徑或若直接文件名則會(huì)存儲(chǔ)到數(shù)據(jù)目錄下)
log_warnings={on|off|2}:將不將警告信息記錄日志
log_warnings表示警告信息是否記錄在錯(cuò)誤日志中,1和0也就是on和off表示記錄和不記錄,2則表示失敗拒絕的連接信息。
在mysql云服務(wù)器上查看錯(cuò)誤日志的配置:
mysql> show global variables like '%log%';
2、通用查詢?nèi)罩荆ǚ浅V匾。。。?/p>
mysql所有查詢語(yǔ)句都會(huì)被記錄。
默認(rèn)關(guān)閉此項(xiàng)記錄,一般作調(diào)試用,平時(shí)開啟會(huì)記錄大量數(shù)據(jù)占用磁盤空間。
存儲(chǔ)位置:文件,表(table,mysql.general_log)
默認(rèn)存儲(chǔ)在數(shù)據(jù)目錄下。
Linux環(huán)境下,修改主配置文件my.cnf。
[mysqld]
general_log={on|off}
general_log_file=mysql_general.log (絕對(duì)路徑或若直接文件名則會(huì)存儲(chǔ)到數(shù)據(jù)目錄下)
log_output={file|table|file,table|none}:日志輸出類型
在不重啟MYSQL服務(wù)的情況下,操作通用查詢?nèi)罩荆?/p>
mysql> set global general_log=on; //開啟
mysql> set global general_log=off; //關(guān)閉
mysql> mysqladmin -u root -p flush-logs //刪除日志(先刪除舊的,再創(chuàng)建一個(gè)新的)
3、二進(jìn)制日志(非常重要?。。。?/p>
1》用于記錄引起數(shù)據(jù)改變或存在引起數(shù)據(jù)改變的潛在可能性的語(yǔ)句(statement)或改變后的結(jié)果(row),也可能是二者混合。
2》包含了所有更新了的數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)的所有語(yǔ)句,記錄了數(shù)據(jù)的更改以及數(shù)據(jù)更改的事件events和位置position。
3》主要目的是在恢復(fù)時(shí)能夠大可能地恢復(fù)數(shù)據(jù)庫(kù),默認(rèn)開啟的。
4》Linux環(huán)境下,修改主配置文件my.cnf。
log_bin=/path/to/bin_log_file:
這是個(gè)只讀變量,表明存放日志的目錄位置,不能在此處寫on或off,若不指定路徑會(huì)存儲(chǔ)在數(shù)據(jù)目錄下。
max_binlog_size=1073741824:
設(shè)置單個(gè)二進(jìn)制文件的大尺寸,以字節(jié)為單位,超過(guò)此值大小就會(huì)自動(dòng)滾動(dòng)。
sync_binlog={1|0|N}:
表示每幾次事務(wù)提交后是否立即將內(nèi)存中的二進(jìn)制日志同步到內(nèi)存(binlog_cache)中。
1表示立即提交;0則不提交;N可為任意值,表示每N次;值不同對(duì)應(yīng)的性能也不同,0和1的性能差別可高達(dá)5倍之多。寫入磁盤的操作是使用fdatasync()函數(shù)。
binlog_format={statement|row|mixed}:
binlog日志存放的格式
expire_logs_days=N:
二進(jìn)制日志的有效天數(shù)
5》可以用mysqlbinlog命令查看二進(jìn)制日志文件。
mysqlbinlog:
yyyy-mm-dd hh:mm:ss
--start-datetime=
--stop-datetime=
-j, --start-position=#
--stop-position=#
--user, --host, --password
8》在mysql中查看二進(jìn)制
查看二進(jìn)制日志文件列表:
mysql> show master|binary logs;
查看當(dāng)前正在使用的二進(jìn)制日志文件:
mysql> show master status;
查看二進(jìn)制日志文件中的事件:
mysql> show binlog events [in 'log_name'] [from pos] [limit [offset,] row_count]
查看二進(jìn)制日志的參數(shù)配置
MariaDB [(none)]> show global variables where variable_name like '%log_bin%' or variable_name like '%binlog%';
9》清除二進(jìn)制日志
清除所有日志(不存在主從復(fù)制關(guān)系)
mysql> reset master;
清除指定日志之前的所有日志
mysql> purge master logs to '日志';
清除某一時(shí)間點(diǎn)前的所有日志
mysql> purge master logs before '年-月-日 時(shí):分:秒';
清除 n 天前的所有日志
mysql> purge master logs before current_date - interval 10 day;
由于二進(jìn)制日志的重要性,請(qǐng)僅在確定不再需要將要被刪除的二進(jìn)制文件,
或者在已經(jīng)對(duì)二進(jìn)制日志文件進(jìn)行歸檔備份,
或者已經(jīng)進(jìn)行數(shù)據(jù)庫(kù)備份的情況下,才進(jìn)行刪除操作,且不要使用 rm 命令刪除。
10》暫停二進(jìn)制日志
Set SQL_LOG_BIN=0; //暫停二進(jìn)制日志
Set SQL_LOG_BIN=1; //啟動(dòng)二進(jìn)制日志
4、慢速查詢?nèi)罩荆ǚ浅V匾。。。?/p>
記錄所有執(zhí)行時(shí)間超過(guò)long_query_time秒的sql語(yǔ)句,可用于找到執(zhí)行時(shí)間長(zhǎng)的查詢,以用于優(yōu)化。
默認(rèn)未開啟,開啟優(yōu)先級(jí)比查詢?nèi)罩靖?,默認(rèn)是超過(guò)10秒的才會(huì)被記錄。
存儲(chǔ)位置:文件,表(table,mysql.slog_log)
Linux環(huán)境下,修改主配置文件/etc/my.cnf,在[mysqld]下添加“l(fā)ong_query_time”和“l(fā)og-slow-queries=文件路徑名”,重啟mysqld服務(wù)。
log_slow_queries={on|off}:是否開啟慢查詢?nèi)罩荆?.5以前)
slow_query_log={on|off}:是否開啟慢查詢?nèi)罩荆ê蜕厦鏇](méi)有區(qū)別,5.6以后)
slow_query_log_file=xxxx-slom.log:慢查詢?nèi)罩敬娣盼恢?,默認(rèn)為“主機(jī)名-slow.log”。相對(duì)路徑的話,默認(rèn)為數(shù)據(jù)目錄下。
log_output={file|table|file,table|none}:表示存放日志的方式
log_query_time=N :表示多長(zhǎng)時(shí)間的查詢被認(rèn)為慢查詢,默認(rèn)為10秒。
mysql自帶了對(duì)慢查詢?nèi)罩镜慕y(tǒng)計(jì)分析工具:mysqldumpslow
操作慢查詢?nèi)罩荆?/p>
mysql> set global slow_query_log=on; //開啟慢查詢?nèi)罩?/p>
mysql> set global slow_query_log=off; //關(guān)閉慢查詢?nèi)罩?/p>
刪除慢查詢?nèi)罩荆褐苯觿h除慢查詢?nèi)罩疚募?,通過(guò)mysqladmin -u root -p flush-logs重新生成一個(gè)新的慢查詢?nèi)罩尽?/p>
Mysql的主要幾種日志及慢查詢方法就先給大家講到這里,對(duì)于其它相關(guān)問(wèn)題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會(huì)捕捉一些行業(yè)新聞及專業(yè)知識(shí)分享給大家的。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。