轉自:
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