mariaDB 查看查詢日誌

轉自:

https://blog.51cto.com/arm2012/1980771

https://www.cnblogs.com/huiy/p/10006772.html

 

1.general日誌相關命令

#查詢日誌是否開啓:general_log
#查詢日誌記錄位置:general_log_file
show global variables like '...'

#開啓/關閉日誌   ON|OFF
SET GLOBAL general_log = '....';

#記錄形式,TABLE記錄在數據庫mysql.general_log表中|FILE記錄在系統文件中|NONE
SET GLOBAL log_output = '...';

#查詢記錄日誌
select * from  mysql.general_log;

 

2.慢查詢日誌(默認關閉,生產中應開啓):查詢操作時間超過指定時間

show global variables like  'long_query_time'; 查看默認時長
select @@GLOBAL.long_query_time;
set global long_query_time=
slow_query_log=ON|OFF
#log_slow_queries=xx.log  5.6版本後被廢
slow_query_log_file=HOSTNAME-slow.log

3.錯誤日誌(一般開啓)

     ① mysqld啓動和關閉過程中輸出的事件信息

     ② mysqld運行中產生的錯誤信息

     ③ event scheduler事件調度器運行一個event時產生的日誌信息

     ④ 在主從複製架構中從服務器上啓動從服務器線程時產生的信息

log_error=/var/log/mariadb/mariadb.log|OFF
log_warnings=1|0 是否記錄警告信息

4.二進制日誌(重要)

功能:用於通過重放日誌文件中的事件來生成數據副本

          記錄導致數據改變或潛在導致數據改變的sql語句

show {BINARY|MASTER}  LOGS; 查看mariadb自行管理使用中的二進制日誌文件列表
show {BINERY|MASTER}  status; 查看正在使用中的日誌文件
show binlog events in 'mysql-bin.000001'  [from  num] [limit  rows]; 查看記錄的事件

二進制日誌記錄格式:binlog_format

      基於sql語句記錄(SBR):statement

      基於行記錄(RBR):row

      混合模式(MBR):mixed,讓系統自行判斷該基於哪種模式(默認)

        #運行時修改SET SESSION binlog_format =

二進制日誌文件構成:

     日誌文件:mysql-bin.文件名後綴  二進制格式

     索引文件:mysql-bin.index 文本格式

服務器變量:

log_bin=/PATH/TO/BIN_LOG_FILE|OFF
#sql_log_bin= {ON|OFF}  是否記錄				
#session.sql_log_bin={ON|OFF}   控制某會話中的“寫”操作語句是否會被記錄於日誌文件中;(重放時應臨時關閉)
max_binlog_size=100M  單個二進制日誌文件的最大體積,默認爲1G
sync_binlog=0或大於0的整數  
    #默認0異步記錄性能更好,由操作系統自己決定什麼時候刷新緩存到持久化設置,如果這個值比0大,它指定了兩次刷新到磁盤的動作之間間隔多少次二進制日誌寫操作。設置1最安全但是最耗內存,
    很多MySQL DBA設置的sync_binlog並不是最安全的1,而是100或者是0。這樣犧牲一定的一致性,可以獲得更高的併發和性能。

mysqlbinlog:客戶端命令工具(直接查看二進制日誌)

--start-datetime="YYYY-MM-DD hh:mm:ss"  開始事件
--stop-datetime="YYYY-MM-DD hh:mm:ss"   結束時間	 
-j, --start-position=# 從哪個位置開始
--stop-position=#	  從哪個位置結束
--user, --host, --password

二進制日誌事件格式:

	# at 553
	#160831  9:56:08 server id 1  end_log_pos 624   Query   thread_id=2     exec_time=0     error_code=0
	SET TIMESTAMP=1472608568/*!*/;
	BEGIN
	/*!*/;

 

     事件的起始位置:# at 553

     事件發生的日期時間:#160831  9:56:08

     事件發生的服務器id:server id 1

     事件的結束位置:end_log_pos 624

     事件的類型:Query

     事件發生時所在服務器執行此事件的線程的ID: thread_id=2

     語句的時間戳與將其寫入二進制日誌文件中的時間差:exec_time=0

     錯誤代碼:error_code=0

     設定事件發生時的時間戳:SET TIMESTAMP=1472608568/*!*/;

     事件內容:BEGIN

5.中繼日誌:

從服務器上記錄下來從主服務器的二進制日誌文件同步過來的事件;

6.事務日誌:

事務型存儲引擎innodb用於保證事務特性的日誌文件:

     redo log

     undo log

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章