mysql部落格日誌 MySQL日誌

2021-10-20 22:59:44 字數 4629 閱讀 2859

日誌檔案對於任何應用程式都是非常重要的,許多操作都需要記錄到日誌,然後可以利用日誌檔案查錯糾錯等。

mysql中當然也有日誌,mysql的日誌大概分為五種,即錯誤日誌、查詢日誌、慢查詢日誌、二進位制日誌和事務日誌。

檢視日誌相關的全域性變數。

--查詢日誌相關全域性變數

show global variables like '%log%';

一、錯誤日誌

在mysql資料庫中,錯誤日誌功能是預設開啟的,並且,錯誤日誌無法被禁止。

mysql的日誌主要記錄伺服器啟動和關閉過程的資訊、伺服器執行過程中的錯誤資訊、事件排程器執行乙個事件時產生的資訊等。

--檢視錯誤日誌檔案的位址

show global variables like 'log_error';--檢視警告資訊是否也寫入到錯誤日誌中,預設值為2。如果要啟用,將其值設定為1;如果要禁用,將其值設定為0。

show global variables like 'log_warnings';

mysqladmin命令重新建立乙個新的錯誤日誌檔案。

--mysqladmin命令重新建立乙個新的錯誤日誌檔案,原錯誤日誌檔案加上字尾old

mysqladmin -u root -p flush-logs

sql語句重新建立乙個新的錯誤日誌檔案。

--重新建立乙個新的錯誤日誌檔案,原錯誤日誌檔案加上字尾old

flush logs;

二、查詢日誌

由於查詢日誌會記錄使用者所有的操作,在使用量比較大時伺服器的i/o操作較多,會大大降低伺服器的效能,所以預設為關閉的,並且不建議開啟。

--檢視查詢日誌是否開啟

show global variables like 'general_log';--檢視查詢日誌的檔案位址

show global variables like 'general_log_file';--是否開啟日誌,設定為開啟時,表示開啟所有的日誌功能

show global variables like 'log';--檢視日誌輸出的格式,可以是表(table)或檔案(file)。如果設定為table,則日誌在mysql.general_log表中;如果設定為none,則不啟用日誌

show global variables like 'log_output';

三、慢查詢日誌

慢查詢日誌是用來記錄執行時間超過指定超時時間的查詢語句。通過慢查詢日誌,可以查詢出哪些查詢語句的執行效率很低,以便進行優化。

一般建議開啟,它對伺服器效能的影響微乎其微,但是可以記錄mysql伺服器上執行時間超時的查詢語句。

--檢視超時時間,單位為秒(s)

show global variables like 'long_query_time';--檢視是否開啟慢查詢日誌

show global variables like 'log-slow-queries';--檢視慢查詢日誌是否開啟,如果設定為開啟,則執行時間超過超時時間,即為慢查詢

show global variables like 'slow_query_log';--檢視慢查詢日誌的檔案位址

show global variables like 'slow_query_log_file';

四、二進位制日誌

二進位制日誌即binlog日誌,它記錄資料定義語言(ddl)和資料控制語言(dml),但不會記錄select、show等不修改資料的語句。

開啟二進位制日誌會消耗一些系統系能,但是對於複製和系統恢復,所帶來的好處可能大於減少的效能。

--檢視是否開啟二進位制日誌,可以設定為on|off,也可以直接設定為檔案的位址,如果不設定位址,則預設在資料目錄下

show global variables like 'log_bin';--檢視會話級別的二進位制日誌功能是否開啟

show global variables like 'sql_log_bin';--設定多久同步一次二進位制日誌至磁碟檔案中,0表示不同步,任何正整數值都表示對二進位制日誌每多少次寫操作之後同步一次--當autocommit=1時,每條語句的執行都會進行二進位制日誌的同步;當autocommit=0時,每個事務的提交都會進行二進位制日誌的同步

show global variables like 'sync_binlog';--指定二進位制日誌的格式,預設為mixed。如果設定了二進位制日誌的格式,卻沒有啟用二進位制日誌,則mysql啟動時會產生警告日誌資訊並記錄於錯誤日誌中。--statement:表示二進位制日誌檔案記錄的是日誌的邏輯式sql語句--row:二進位制日誌記錄的不再是簡單的sql語句了,而是記錄表的行更改情況,此時可以將innodb的事務隔離基本設為read committed,以獲得更好的併發性--mixed:mysql預設採用的statement格式進行二進位制日誌檔案的記錄,但是在一些情況下會使用row格式

show global variables like 'binlog-format';--設定binlog快取資料的記憶體區域的大小,預設值為32768。

show global variables like 'binlog_cache_size';--設定binlog臨時快取資料的記憶體區域的大小,預設值為32768。

show global variables like 'binlog_stmt_cache_size';--設定binlog快取空間的最大值,預設值為18446744073709547520。

show global variables like 'max_binlog_cache_size';--設定binlog臨時快取空間的最大值,預設值為18446744073709547520。

show global variables like 'max_binlog_stmt_cache_size';--設定二進位制日誌的過期天數,超出此天數的二進位制日誌檔案將被自動刪除。預設為0,表示不啟用過期自動刪除功能。如果啟用此功能,自動刪除工作通常發生在mysql啟動時或flush日誌時。

show global variables like 'expire_log_days';--每次重啟mysql服務或執行該命令時,都會生成乙個新的二進位制日誌檔案

flush logs;

檢視二進位制日誌檔案。

--檢視當前伺服器使用的二進位制日誌檔案及大小

show binarylogs;--檢視主伺服器使用的二進位制日誌檔案及大小

show master logs;--檢視當前二進位制日誌檔案的狀態及所處位置

show master status;--檢視所有的二進位制日誌檔案的資訊

show binlog events;--檢視指定的二進位制日誌檔案的資訊

show binlog events in 'mysql-bin.000001';--檢視指定的二進位制日誌檔案的資訊,並從指定的事件位置開始

show binlog events in 'mysql-bin.000001' from 170;--檢視指定的二進位制日誌檔案的資訊,並從指定的事件位置開始以及事件的偏移量

show binlog events in 'mysql-bin.000001' from 170 limit 3;

刪除二進位制日誌檔案。

--刪除所有的二進位制日誌檔案,刪除所有的二進位制日誌後,mysql將會重新建立新的二進位制日誌,新的二進位制日誌的編號從000001開始。

reset master;--刪除指定二進位制日誌檔案之前的所有二進位制日誌檔案,這裡表示刪除檔案mysql-bin.000010之前的所有檔案

purge binary logs to 'mysql-bin.000010';

purge master logsto 'mysql-bin.000010';--刪除指定時間之前的所有二進位制日誌檔案,這裡表示刪除18-06-06 12:00:00之前的所有檔案

purge binary logs to '18-06-06 12:00:00';

purge master logsto '18-06-06 12:00:00';

五、事務日誌

事務日誌(innodb儲存引擎所特有的日誌)可以幫助提高事務的效率。

使用事務日誌,儲存引擎在修改表的資料時只需要修改其記憶體拷貝,再把改修改行為記錄到持久在硬碟上的事務日誌中,而不用每次都將修改的資料本身持久到磁碟。

--檢視在事務提交時innodb是否同步日誌從緩衝到檔案中--如果為0,表示每隔一秒同步一次,並進行一次磁碟訪問將日誌重新整理到磁碟,會造成大量的磁碟i/o,效能很差--如果為1,表示只有在事務提交時才會同步,並進行一次磁碟訪問將日誌重新整理到磁碟--如果為2,表示只有在事務提交時才會同步,但不進行磁碟訪問,可能會丟失整個事務

show global variables like 'innodb_flush_log_at_trx_commit';--檢視innodb事務日誌組的檔案個數

show global variables like 'innodb_log_files_in_group';--檢視innodb事務日誌組的位址

show global variables like 'innodb_log_group_home_dir';--檢視是否對事務日誌做映象

show global variables like 'innodb_mirrored_log_groups';

以上所涉及到的全域性變數和未涉及到的全域性變數都可以通過set命令進行修改,但這種方式在mysql伺服器重啟之後就失效了,需要再次修改。

如果需要永久的改變,則可以通過修改在mysql安裝目錄下的my.ini(windows os)或my.cnf(linux os)的配置檔案。

mysql 日誌 部落格 Mysql 日誌

日誌 errlog錯誤日誌 作用記錄mysql從啟動以來,所有的狀態,警告,錯誤。dba靠此定位資料庫問題。配置預設是開啟,vim etc my.cnf log error var log mysqld.log binlog二進位制日誌 作用主要記錄資料庫變化的日誌。資料恢復,主從複製中應用 檢視再...

mysql教程日誌 如何檢視mysql的日誌

檢視mysql日誌的方法 檢視是否啟用了日誌mysql show variables like log bin 檢視當前的日誌mysql show master status 檢視看二進位制日誌檔案用mysqlbinlogshell mysqlbinlog mail bin.000001 要寫絕對問...

mysql 5 7日誌檢視

1.cmd連線mysql。2.show variables like log 結果如圖所示 其中,general log預設關閉,此處已開啟。3.找到mysql的my.ini檔案 目錄為 c programdata mysql mysql server 5.7 該資料夾常為隱藏 通過開啟服務,找到m...