mysql日志

查看mysql日志:

mysql> show global variables like '%log%';

mysql日志文件分為6種:

1.錯誤日志:記錄啟動、運行或停止時出現(xiàn)的問題,一般也會記錄警告日志

2.一般查詢?nèi)罩荆河涗浗⒌目蛻舳随溄雍蛨?zhí)行的語句

3.慢查詢?nèi)罩荆河涗浰袌?zhí)行時間超過long_query_time秒的所有查詢或不使用索引的查詢,可以幫我們定位服務(wù)器性能問題

4.二進制日志:任何引起或可能引起數(shù)據(jù)庫變化的操作,主要用于備份和即時點恢復(fù)

5.中繼日志:復(fù)制主服務(wù)器的二進制日志,并保存為日志文件

6.事務(wù)日志:記錄InnoDB等支持事務(wù)的存儲引擎執(zhí)行事務(wù)時產(chǎn)生的日志

1,錯誤日志

錯誤日志主要記錄如下幾種日志:

———–> 服務(wù)器啟動和關(guān)閉過程中的信息

———–> 服務(wù)器運行過程中的錯誤信息

———–> 事件調(diào)度器運行一個事件時產(chǎn)生的信息

———–> 在從服務(wù)器上啟動從服務(wù)器進程時產(chǎn)生的信息

錯誤日志定義:

可以用–log-error [ = file_name ]選項來指定mysqld保存錯誤日志文件的位置。如果沒有給定file_name值,mysqld使用錯誤日志名host_name.err 并在數(shù)據(jù)目錄中寫入日志文件。如果你執(zhí)行FLUSH LOGS,錯誤日志用-old重新命名后綴并且mysqld創(chuàng)建一個新的空日志文件。(如果未給出–log-error選項,則不會重新命名)。

錯誤日志一般有以上兩個變量可以定義:

錯誤日志文件:log_error

啟用警告信息:log_warnings (默認啟用)

mysql> show global variables like 'log_error';

mysql> show global variables like 'log_warnings';

啟動開關(guān):general_log={ON|OFF}

日志文件變量:general_log_file [ =/PATH/TO/file]

全局日志開關(guān):log={ON|OFF}?? 該開關(guān)打開后,所有日志都會被啟用

記錄類型:log_output={TABLE|FILE|NONE}

log_output定義了日志的輸出格式,可以是表,文件,若設(shè)置為NONE,則不啟用日志,因此,要啟用通用查詢?nèi)罩?,需要至少配置general_log=ON,log_output={TABLE|FILE}。而general_log_file如果沒有指定,默認名是host_name.log。由于一般查詢使用量比較大,啟用寫入日志文件,服務(wù)器的I/O操作較多,會大大降低服務(wù)器的性能,所以默認為關(guān)閉的。

mysql> show global variables like 'general_log';

mysql> show global variables like'general_log_file';

可以使用以下命令開啟general_log:

mysql> set global general_log=1;

mysql> show global variables like 'general_log';

3、慢查詢?nèi)罩?/b>

查詢超時時間:long_query_time

啟動慢查日志:log_slow_queries={YES|NO}

啟動慢查日志 : slow_query_log

日志記錄文件:slow_query_log_file [= file_name ]

MySQL如果啟用了slow_query_log=ON選項,就會記錄執(zhí)行時間超過long_query_time的查詢(初使表鎖定的時間不算作執(zhí)行時間)。日志記錄文件如果沒有給出file_name值, 默認為主機名,后綴為-slow.log。如果給出了文件名,但不是絕對路徑名,文件則寫入數(shù)據(jù)目錄。

mysql> show global variables like '%slow_query_log%';

4,二進制日志

二進制日志啟動開關(guān):log-bin [= file_name]

在5.6及以上版本一定要手動指定。5.6以下版本默認file_name為$datadir/mysqld-binlog,二進制日志用于記錄所有更改數(shù)據(jù)的語句,主要用于復(fù)制和即時點恢復(fù)。二進制日志的主要目的是在數(shù)據(jù)庫存在故障時,恢復(fù)時能夠最大可能地更新數(shù)據(jù)庫(即時點恢復(fù)),因為二進制日志包含備份后進行的所有更新,二進制日志還用于在主復(fù)制服務(wù)器上記錄所有將發(fā)送給從服務(wù)器的語句。

查看二進制日志的工具為:mysqlbinlog

二進制日志的格式:

——>? 基于語句: statement

——>? 基于行: row

——>? 混合方式: mixed

由于基于語句和基于行的日志格式都有自己的好處,MySQL使用的二進制日志文件是混合方式的二進制日志,內(nèi)置策略會自動選擇最佳的格式。

二進制日志事件:

——>? 產(chǎn)生的時間:starttime

——>? 相對位置:position

二進制日志文件:

——>? 索引文件

——>? 二進制日志文件

在數(shù)據(jù)目錄下有一個mysql-bin.index便是索引文件,以mysql-bin開頭并以數(shù)字結(jié)尾的文件為二進制日志文件。

日志的滾動:

MySQL的滾動方式與其他日志不太一樣,滾動時會創(chuàng)建一個新的編號大1的日志用于記錄最新的日志,而原日志名字不會被改變。每次重啟MySQL服務(wù),日志都會自動滾動一次。

mysql> flush logs;

mysql> show master status; ? ? ? ? ####查看當(dāng)前正在使用的二進制文件

mysql> show binary logs; ? ? ? ? ? ? ####查看所有的二進制文件

使用命令mysqlbinlog查看二進制日志內(nèi)容:

基本語法:

mysqlbinlog [options] log-files

常用options(類似字節(jié)偏移數(shù)):

--start-position???? :開始位置

--stop-position???? :結(jié)束位置

--start-datetime 'yyyy-mm-dd hh:mm:ss'? :開始時間

--stop-datetime 'yyyy-mm-dd hh:mm:ss'? :結(jié)束時間

6,事務(wù)日志

事務(wù)性存儲引擎用于保證(ACID)原子性、一致性、隔離性和持久性;其不會立即寫到數(shù)據(jù)文件中,而是寫到事務(wù)日志中。

innodb_flush_log_at_trx_commit:

———–>? 0: 每秒同步,并執(zhí)行磁盤flush操作;

———–>? 1:每事務(wù)同步,并執(zhí)行磁盤flush操作;

———–>? 2: 每事務(wù)同步,但不執(zhí)行磁盤flush操作;

mysql> show global variables like 'innodb_flush_log_at_trx_commit';

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 日志文件對于一個服務(wù)器來說是非常重要的,它記錄著服務(wù)器的運行信息,許多操作都會寫日到日志文件,通過日志文件可以監(jiān)視...
    時待吾閱讀 1,125評論 0 5
  • Mysql 有4種類型的日志:Error Log、Genaral Query Log、 Binary Log 和 ...
    人在碼途閱讀 16,597評論 2 11
  • mysql中的日志在/etc/my.cnf文件中配置 錯誤日志 log-error[=file_name] fil...
    jsdjl閱讀 441評論 0 0
  • 目錄: 1.查詢?nèi)罩?2.慢查詢?nèi)罩?3.錯誤日志 4.二進制日志 5.中斷日志 6.事物日志 一、查詢?nèi)罩?ge...
    BossHuang閱讀 2,701評論 0 0
  • 正在做不正當(dāng)交易的伊麗莎白,非禮勿視
    西瓜蘇打閱讀 417評論 0 0

友情鏈接更多精彩內(nèi)容