MySQL日誌管理

2021-09-24 10:36:04 字數 4734 閱讀 9938

mysql日誌主要包含:錯誤日誌、一般查詢日誌、慢查詢日誌、二進位制日誌 、中繼日誌、事務日誌。

1.錯誤日誌

錯誤日誌大概記錄以下幾個方面的資訊:伺服器啟動和關閉過程中的資訊(未必是錯誤資訊,如mysql如何啟動innodb的表空間檔案的、如 何初始化自己的儲存引擎的等等)、伺服器執行過程中的錯誤資訊、事件排程器執行乙個事件時產生的資訊、在從伺服器上啟動伺服器程序時產生的資訊。

在mysql資料庫中,錯誤日誌功能是預設開啟的。並且,錯誤日誌無法被禁止。預設情況下,錯誤日誌儲存在mysql資料庫的資料檔案中。錯誤日誌檔案通常的名稱為hostname.err。其中,hostname表示伺服器主機名。

log_error=/path/to/error_log_filename:定義錯誤日誌檔案。作用範圍為全域性或會話級別,可用於配置檔案,屬非動態變數。

log_warnings=#:設定是否將警告資訊記錄進錯誤日誌。預設設定為1,表示啟用;可以將其設定為0以禁用;而其值為大於1的數值時表示將新發起連線時產生的「失敗的連線」和「拒絕訪問」類的錯誤資訊也記錄進錯誤日誌。

2.一般查詢日誌

預設情況下查詢日誌是關閉的。由於查詢日誌會記錄使用者的所有操作,其中還包含增刪查改等資訊,在併發操作大的環境下會產生大量的資訊從而導致不必要的磁碟io,會影響mysql的效能的。

general_log=:設定是否啟用查詢日誌,預設值為取決於在啟動mysqld時是否使用了--general_log選項。如若啟用此項,其輸出位置則由--log_output選項進行定義,如果log_output的值設定為none,即使用啟用查詢日誌,其也不會記錄任何日誌資訊。作用範圍為全域性,可用於配置檔案,屬動態變數。

general_log_file=file_name:查詢日誌的日誌檔名稱,預設為「hostname.log"。作用範圍為全域性,可用於配置檔案,屬動態變數。

log=:是否啟用記錄所有語句的日誌資訊於一般查詢日誌(general query log)中,預設通常為off。mysql 5.6已經棄用此選項。

log_output=:定義一般查詢日誌和慢查詢日誌的儲存方式,可以是table、file、none,也可以是table及file的組合(用逗號隔開),預設為table。如果組合**現了none,那麼其它設定都將失效,同時,無論是否啟用日誌功能,也不會記錄任何相關的日誌資訊。作用範圍為全域性級別,可用於配置檔案,屬動態變數。

3.慢查詢日誌

慢查詢日誌是用來記錄執行時間超過指定時間的查詢語句。通過慢查詢日誌,可以查詢出哪些查詢語句的執行效率很低,以便進行優化。一般建議開啟,它對伺服器效能的影響微乎其微,但是可以記錄mysql伺服器上執行了很長時間的查詢語句。可以幫助我們定位效能問題的。

long_query_time=#:設定區別慢查詢與一般查詢的語句執行時間長度。這裡的語句執行時長為實際的執行時間,而非在cpu上的執行時長,因此,負載較重的伺服器上更容易產生慢查詢。其最小值為0,預設值為10,單位是秒鐘。它也支援毫秒級的解析度。作用範圍為全域性或會話級別,可用於配置檔案,屬動態變數。

log_slow_queries=:是否記錄慢查詢日誌。慢查詢是指查詢的執行時間超出long_query_time引數所設定時長的事件。mysql 5.6將此引數修改為了slow_query_log。作用範圍為全域性級別,可用於配置檔案,屬動態變數。

slow_query_log=:設定是否啟用慢查詢日誌。0或off表示禁用,1或on表示啟用。日誌資訊的輸出位置取決於log_output變數的定義,如果其值為none,則即便slow_query_log為on,也不會記錄任何慢查詢資訊。作用範圍為全域性級別,可用於選項檔案,屬動態變數。

slow_query_log_file=/path/to/somefile:設定慢查詢日誌檔案的名稱。預設為hostname-slow.log,但可以通過--slow_query_log_file選項修改。作用範圍為全域性級別,可用於配置檔案,屬動態變數。

4.二進位制日誌

二進位制日誌也叫作變更日誌,主要用於記錄修改資料或有可能引起資料改變的操作。

二進位制日誌格式:基於語句(statement)、基於行(row)、混合方式(mixed)。

二進位制日誌事件:產生的時間(starttime)、相對位置(position)。

mysql> show master status;    #檢視當前正在使用的二進位制日誌檔案資訊;

mysql> show binary logs;     #檢視當前所有二進位制日誌檔案;

mysql> show binlog events in '二進位制日誌檔名' [from pos];    #檢視二進位制日誌檔案中事件資訊;

mysql> purge binary logs to '某二進位制日誌檔案';    #刪除指定二進位制日誌檔案之前的二進位制日誌檔案;

mysql> flush logs;    #日誌滾動

命令列下檢視二進位制日誌:

mysqlbinlog --start-datetime='starttime' --stop-datetime='stoptime' 二進位制日誌檔名

#time格式為yyyy-mm-dd hh:mm:ss,顯示時間starttime和stoptime之間的內容。

mysqlbilog --start-position=n --stop-position=m 二進位制日誌檔名

#顯示起始startposition和stopposition之間的內容

例:mysqlbinlog --start-position=107 --stop-position=358 mysql-bin.000005

mysqlbinlog --start-datetime='2015-08-22 23:06:33' mysql-bin.000005

mysqlbinlog mysql-bin.000005    #不加引數表示顯示全部內容

binlog_format=:指定二進位制日誌的型別,預設為statement。如果設定了二進位制日誌的格式,卻沒有啟用二進位制日誌,則mysql啟動時會產生警告日誌資訊並記錄於錯誤日誌中。作用範圍為全域性或會話,可用於配置檔案,且屬於動態變數。

binlog_cache_size=#:二進位制日誌快取大小,其上限取決於binlog_stmt_cache_size。

binlog_stmt_cache_size=#:二進位制日誌語句快取大小,就目前來說與binlog_cache_size幾乎表示的是同乙個意思。

log_bin=:是否啟用二進位制日誌,如果為mysqld設定了--log-bin選項,則其值為on,否則則為off。其僅用於顯示是否啟用了二進位制日誌,並不反應log-bin的設定值。作用範圍為全域性級別,屬非動態變數。

sql_log_bin=:用於控制二進位制日誌資訊是否記錄進日誌檔案。預設為on,表示啟用記錄功能。使用者可以在會話級別修改此變數的值,但其必須具有super許可權。作用範圍為全域性和會話級別,屬動態變數。

sync_binlog=#:設定多久同步一次二進位制日誌至磁碟檔案中,0表示不同步,任何正數值都表示對二進位制每多少次寫操作之後同步一次。當autocommit的值為1時,每條語句的執行都會引起二進位制日誌同步,否則,每個事務的提交會引起二進位制日誌同步。

max_binlog_cache_size=:二進定日誌快取空間大小,5.5.9及以後的版本僅應用於事務快取,其上限由max_binlog_stmt_cache_size決定。作用範圍為全域性級別,可用於配置檔案,屬動態變數。

max_binlog_size=:設定二進位制日誌檔案上限,單位為位元組,最小值為4k,最大值為1g,預設為1g。某事務所產生的日誌資訊只能寫入乙個二進位制日誌檔案,因此,實際上的二進位制日誌檔案可能大於這個指定的上限。作用範圍為全域性級別,可用於配置檔案,屬動態變數。

expire_logs_days=:設定二進位制日誌的過期天數,超出此天數的二進位制日誌檔案將被自動刪除。預設為0,表示不啟用過期自動刪除功能。如果啟用此功能,自動刪除工作通常發生在mysql啟動時或flush日誌時。作用範圍為全域性,可用於配置檔案,屬動態變數。

5.中繼日誌

從主伺服器的二進位制日誌檔案中複製而來的事件,並儲存為的日誌檔案。

6.事務日誌

事務性儲存引擎用於保證原子性、一致性、隔離性和永續性。

innodb_flush_log_at_trx_commit=:0: 每秒同步(將記憶體中的日誌事件同步到日誌檔案中),並執行磁碟flush操作;1:每事務同步,並執行磁碟flush操作;2: 每事務同步,但不執行磁碟flush操作。

innodb_log_buffer_size=:設定innodb用於輔助完成日誌檔案寫操作的日誌緩衝區大小,單位是位元組,預設為8mb。較大的事務可以借助於更大的日誌緩衝區來避免在事務完成之前將日誌緩衝區的資料寫入日誌檔案,以減少i/o操作進而提公升系統效能。因此,在有著較大事務的應用場景中,建議為此變數設定乙個更大的值。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。

innodb_log_file_size=:設定日誌組中每個日誌檔案的大小,單位是位元組,預設值是5mb。較為明智的取值範圍是從1mb到快取池體積的1/n,其中n表示日誌組中日誌檔案的個數。日誌檔案越大,在快取池中需要執行的檢查點刷寫操作就越少,這意味著所需的i/o操作也就越少,然而這也會導致較慢的故障恢復速度。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。

innodb_log_files_in_group=:設定日誌組中日誌檔案的個數。innodb以迴圈的方式使用這些日誌檔案。預設值為2。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。

innodb_log_group_home_dir=/path/to/dir:設定innodb重做日誌檔案的儲存目錄。在預設使用innodb日誌相關的所有變數時,其缺省會在資料目錄中建立兩個大小為5mb的名為ib_logfile0和ib_logfile1的日誌檔案。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。

mysql日誌管理

1,錯誤日誌 記錄啟動 執行或停止時出現的問題,一般也會記錄警告資訊。2,一般查詢日誌 記錄建立的客戶端連線和執行的語句。3,慢查詢日誌 記錄所有執行時間超過long query time秒的所有查詢或不使用索引的查詢,可以幫我們定位伺服器效能問題。1,錯誤日誌 錯誤日誌 記錄啟動 執行或停止時出現...

MySQL 日誌管理

在 mysql 中,有 4 種不同的日誌,分別是錯誤日誌 二進位制日誌 查詢日誌和慢查詢日誌。錯誤日誌記錄了 mysql 啟動和停止時以及伺服器在執行過程中發生嚴重錯誤時的相關資訊。mysql show variables like log error variable name value log...

Mysql 日誌管理

mysql日誌 記錄著mysql資料庫執行期間的操作和資訊 日誌作用 1 當資料庫遭到意外損害,可以通過日誌檔案來查詢出錯原因 2 利用日誌檔案進行資料恢復 日誌分類 1 二進位制日誌 以二進位制檔案的形式記錄了資料庫中的操作,但是不記錄查詢語句 2 錯誤日誌 記錄mysql伺服器的啟動 關閉和執行...