查看mysql日志:
mysql> show global variables like '%log%';
mysql日志文件分為6種:
1.錯誤日志:記錄啟動姊途、運行或停止時出現(xiàn)的問題雏婶,一般也會記錄警告日志
2.一般查詢日志:記錄建立的客戶端鏈接和執(zhí)行的語句
3.慢查詢日志:記錄所有執(zhí)行時間超過long_query_time秒的所有查詢或不使用索引的查詢鸿市,可以幫我們定位服務器性能問題
4.二進制日志:任何引起或可能引起數(shù)據(jù)庫變化的操作鸡捐,主要用于備份和即時點恢復
5.中繼日志:復制主服務器的二進制日志鞠鲜,并保存為日志文件
6.事務日志:記錄InnoDB等支持事務的存儲引擎執(zhí)行事務時產生的日志
1嗅绸,錯誤日志
錯誤日志主要記錄如下幾種日志:
———–> 服務器啟動和關閉過程中的信息
———–> 服務器運行過程中的錯誤信息
———–> 事件調度器運行一個事件時產生的信息
———–> 在從服務器上啟動從服務器進程時產生的信息
錯誤日志定義:
可以用–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';
啟動開關:general_log={ON|OFF}
日志文件變量:general_log_file [ =/PATH/TO/file]
全局日志開關:log={ON|OFF}?? 該開關打開后,所有日志都會被啟用
記錄類型:log_output={TABLE|FILE|NONE}
log_output定義了日志的輸出格式麻蹋,可以是表跛溉,文件,若設置為NONE哥蔚,則不啟用日志倒谷,因此,要啟用通用查詢日志糙箍,需要至少配置general_log=ON渤愁,log_output={TABLE|FILE}。而general_log_file如果沒有指定深夯,默認名是host_name.log抖格。由于一般查詢使用量比較大诺苹,啟用寫入日志文件,服務器的I/O操作較多雹拄,會大大降低服務器的性能收奔,所以默認為關閉的。
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滓玖、慢查詢日志
查詢超時時間: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碍侦,二進制日志
二進制日志啟動開關:log-bin [= file_name]
在5.6及以上版本一定要手動指定粱坤。5.6以下版本默認file_name為$datadir/mysqld-binlog,二進制日志用于記錄所有更改數(shù)據(jù)的語句,主要用于復制和即時點恢復瓷产。二進制日志的主要目的是在數(shù)據(jù)庫存在故障時站玄,恢復時能夠最大可能地更新數(shù)據(jù)庫(即時點恢復),因為二進制日志包含備份后進行的所有更新,二進制日志還用于在主復制服務器上記錄所有將發(fā)送給從服務器的語句拦英。
查看二進制日志的工具為:mysqlbinlog
二進制日志的格式:
——>? 基于語句: statement
——>? 基于行: row
——>? 混合方式: mixed
由于基于語句和基于行的日志格式都有自己的好處蜒什,MySQL使用的二進制日志文件是混合方式的二進制日志,內置策略會自動選擇最佳的格式疤估。
二進制日志事件:
——>? 產生的時間:starttime
——>? 相對位置:position
二進制日志文件:
——>? 索引文件
——>? 二進制日志文件
在數(shù)據(jù)目錄下有一個mysql-bin.index便是索引文件灾常,以mysql-bin開頭并以數(shù)字結尾的文件為二進制日志文件。
日志的滾動:
MySQL的滾動方式與其他日志不太一樣铃拇,滾動時會創(chuàng)建一個新的編號大1的日志用于記錄最新的日志钞瀑,而原日志名字不會被改變。每次重啟MySQL服務慷荔,日志都會自動滾動一次雕什。
mysql> flush logs;
mysql> show master status; ? ? ? ? ####查看當前正在使用的二進制文件
mysql> show binary logs; ? ? ? ? ? ? ####查看所有的二進制文件
使用命令mysqlbinlog查看二進制日志內容:
基本語法:
mysqlbinlog [options] log-files
常用options(類似字節(jié)偏移數(shù)):
--start-position???? :開始位置
--stop-position???? :結束位置
--start-datetime 'yyyy-mm-dd hh:mm:ss'? :開始時間
--stop-datetime 'yyyy-mm-dd hh:mm:ss'? :結束時間
6,事務日志
事務性存儲引擎用于保證(ACID)原子性显晶、一致性贷岸、隔離性和持久性;其不會立即寫到數(shù)據(jù)文件中磷雇,而是寫到事務日志中偿警。
innodb_flush_log_at_trx_commit:
———–>? 0: 每秒同步,并執(zhí)行磁盤flush操作唯笙;
———–>? 1:每事務同步螟蒸,并執(zhí)行磁盤flush操作盒使;
———–>? 2: 每事務同步,但不執(zhí)行磁盤flush操作七嫌;
mysql> show global variables like 'innodb_flush_log_at_trx_commit';