MySQL日誌: 查詢日誌:query log 慢查詢日誌: 查詢執行時長超過指定時長的查詢操作所記錄的日誌 slow query log 錯誤日誌:包含了伺服器啟動和關閉的正常信息 二進位日誌:包含了所有更新了數據或者已經潛在更新了數據(比如沒有匹配任何行的一個DELETE),主要目的是儘可能的將 ...
MySQL日誌:
查詢日誌:query log
慢查詢日誌: 查詢執行時長超過指定時長的查詢操作所記錄的日誌 slow query log
錯誤日誌:包含了伺服器啟動和關閉的正常信息
二進位日誌:包含了所有更新了數據或者已經潛在更新了數據(比如沒有匹配任何行的一個DELETE),主要目的是儘可能的將資料庫恢復到資料庫故障點,因為二進位日誌包含備份後進行的所有更新
中繼日誌:relay log 複製架構中,從伺服器用於保存從主伺服器的二進位日誌文件讀取到的數據
事物日誌:transaction log(事務型存儲引擎自行管理和使用 如Inodb引擎)
查看各項日誌是否開啟:
general_log = {ON|OFF}: 是否啟用查詢日誌
general_log_file: 當log_output有FILE類型時,日誌信息的記錄位置
log_output = {TABLE|FILE|NONE} 日誌記錄類型為表,文件,或者不記錄
補充:一般不會記錄,因為記錄它的價值不大
slow_query_log 慢查詢日誌是否啟用(為了排查問題,必須啟動它)
slow_query_log_file 記錄慢查詢的文件路徑
log_slow_query 慢查詢是否開啟跟slow_query_log沒有本質區別(學個mysql的日誌真是麻煩)
log_error 記錄錯誤日誌的文件路徑
log_warnings = {1|0}:是否記錄警告信息於錯誤日誌中
sql_log_bin 記錄二進位日誌是否開啟
binlog_format 記錄二進位日誌的格式
max_binlog_size 單個二進位日誌文件的大小預設單位為位元組(當到達最大值,日誌文件就會滾動)
sync_binlog 是否啟用直接將二進位日誌寫入磁碟(影響mysql性能的參數)
查看慢查詢日誌的指定超時時長,也可以使用select @@global.long_query_time命令查看 兩個@@代表伺服器級別的變數,單個@代表用戶級別的變數
預設為10秒,使用set global long_query_time= 對此參數設定(臨時有效,永久有效要在配置文件中修改)
SHOW {BINARY | MASTER} LOGS:查看主伺服器端處於由mysqld維護狀態中的二進位日誌文件(centos 下yum 安裝的mysql預設沒有開啟二進位日誌,須在/etc/my.cnf配置文件中[mysqld]下添加log_bin=HELLO 開啟二進位日誌)
vim /etc/my.cnf service mysqld restart
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]:顯示指定的二進位日誌文件中的相關事件
Pos 事件開始的位置 End_log_pos下一個事件開始的位置或此事件的結束位置
查看mysql正在使用的二進位日誌文件
二進位日誌的功能:用於重放日誌文件中的事件來生成數據副本
日誌記錄格式:
基於語句記錄;statement
基於行記錄;row
混合模式:mixed
查看二進位日誌的客戶端工具: mysqlbinlog --start-position=#:從指定的事件位置查看 --stop-position=#:只顯示到指定的事件位置
用法: #mysqlbinlog --start-position=4 HELLO.000001
二進位日誌的格式事例:
# at 19364
#140829 15:50:07 server id 1 end_log_pos 19486 Query thread_id=13 exec_time=0
error_code=0
SET TIMESTAMP=1409298607/*!*/;
GRANT SELECT ON tdb.* TO tuser@localhost
/*!*/;
# at 19486
事件發生的日期和時間;(140829 15:50:07)
事件發生在伺服器的標識(server id)
事件的結束位置:(end_log_pos 19486)
事件的類型:(Query)
事件發生時所在的伺服器執行此事件的線程的ID:(thread_id=13)
語句的時間戳與將其寫入二進位文件中的時間差:(exec_time=0)
錯誤代碼:(error_code=0)
事件內容:(SET TIMESTAMP=1409298607/*!*/;
GRANT SELECT ON tdb.* TO tuser@localhost)