MySQL的日志管理
SHOW GLOBAL VARIABLES LIKE '%log%'; 查看和日志有關的變量配置
-----------------------------------------------------------
日志的類型:
錯誤日志
查詢?nèi)罩?
慢查詢?nèi)罩?
二進制日志
中繼日志
事務日志
------------------------------------------------------------
錯誤日志:
錯誤日志文件記錄的內(nèi)容:
?1 服務器啟動過程中的信息.
?2 服務器運行過程中產(chǎn)生的錯誤信息.
?3 時間調(diào)度器運行一個事件的時候產(chǎn)生的錯誤信息
?4 從服務器啟動過程中產(chǎn)生的信息.
錯誤日志的文件默認是數(shù)據(jù)目錄中,文件的命名 hostname.err
錯誤日志是不能關閉的.
服務器配置參數(shù)變量:
?log_error = PATH 指定錯誤日志的文件的位置 和 文件名
?log_warning = 0 | 1 表示警告信息是否寫入錯誤日志文件中
--------------------------------------------------------------
查詢?nèi)罩?#xff1a;
查詢?nèi)罩居涗浟怂械牟樵兊恼Z句,在生產(chǎn)服務器中,我們是不回打開這個開關的,會消耗服務器的資源
服務器的配置參數(shù)變量:
?general_log = On | Off ?查詢?nèi)罩镜拈_關
?general_log_file = PATH 查詢?nèi)罩疚募奈恢煤臀募?
?log = On | Off 表示是否所有的語句(delete update...)都寫入查詢?nèi)罩?
?log_output = FILE | TABLE | NONE 查詢?nèi)罩据敵龅奈恢?
FILE 表示輸出到文件 使用 general_log_file參數(shù)
TABLE 表示輸出到表中 mysql.general_log 表中
NONE 表示即使打開general_log 也不記錄日志
?
---------------------------------------------------------------
慢查詢?nèi)罩?#xff1a;
慢查詢?nèi)罩居涗浟藞?zhí)行時間查過了指定時間的SQL語句,這個日志一般是開啟的,不會消耗太多的系統(tǒng)資源.
服務器的配置參數(shù):
?long_query_time = 超時時間
?
?slow_query_log = On | Off 慢查詢?nèi)罩镜拈_關
?slow_query_log_file = PATH 慢查詢?nèi)罩镜奈恢?
?log_slow_queries = On | OFf 慢查詢?nèi)罩镜拈_關 5.6之前使用
? ? ? ? ? log_output = FILE | TABLE | NONE?
FILE 表示使用slow_query_log_file 參數(shù)
? ? ? ?TABLE 表示記錄到數(shù)據(jù)庫的表中 mysql.slow_log? ? ? ? ??
----------------------------------------------------------------
二進制日志:
二進制日志文件保存了 修改 和 潛在可能修改的語句.
二進制日志文件的作用 是 復制 和 恢復
二級制日志的滾動:避免單個二進制日志文件過大
1 基于大小的滾動
2 基于時間的滾動
3 服務器啟動的時候滾動
4 FLUSH LOGS;命令滾動日志
查看當前使用的二進制日志文件:
SHOW MASTER STATUS;
查看所有的二進制日志文件:(查看索引文件中的內(nèi)容)
SHOW BINARY LOGS;
查看二進制日志的內(nèi)容:
1 使用用戶空間的工具
?mysqlinlog '文件';
?mysqlbinlog --start-datetime ‘二進制日志文件';
?mysqlbinlog --stop-datetime '二進制日志文件';
?mysqlbinlog --start-position '二進制日志文件';
?mysqlbinlog --stop-position '二進制日志文件';
2 使用mysql的命令
?mysql> SHOW BINLOG EVENTS IN '文件' FROM pos;
Log_Name :二進制日志文件的文件名
Pos : 二進制日志的開始的相對位置
Server_id : 產(chǎn)生該日志的服務器的ID號碼
ENd_log_pos : 結(jié)束日志的相對位置
Info : 日志的信息
刪除二進制日志文件:
PURGE BINARY LOGS TO '二進制日志文件'; 表示刪除指定二進制日志文件之前的所有二進制日志文件.
服務器參數(shù)配置變量:
binlog_formart = STATEMENT | ROW | MIXED 定義了二進制日志的格式
STATEMENT 是基于語句保存數(shù)據(jù)
ROW 是基于行保存數(shù)據(jù)
MIXED 是混合的保存方式
binlog_cache_size = 定義事務性語句使用的用戶空間的緩沖二進制日志的大小
binlog_stmt_cache_size = 定義非事務性語句使用的用戶空間的緩沖二進制日志的大小
bin_log = PATH 指定二進制日志文件的位置
bin_log_index = 指定二進制日志的索引文件的位置
sql_log_bin = On | OFF 是否開啟二進制日志 這個會話參數(shù) 是不能在配置文件中配置的
max_binlog_cache_size =
max_binlog_stmt_cache_size =?
sync_binlog = 控制同步二進制日志
0 表示由文件系統(tǒng)決定什么時候同步二進制日志 從文件系統(tǒng)到磁盤
n 表示每n次二進制寫入文件系統(tǒng)緩沖就 有文件系統(tǒng)同步到磁盤中
中繼日志:
中繼日志是從主服務器中復制而來的二進制日志文件,并在本地保存為中繼日志.
事務日志:
事務日志是將 非順序的I/O操作轉(zhuǎn)化為順序的I/O操作.
innodb_flush_log_at_trx_commit 事務提交的時候同步事務日志的方式
0 表示每秒同步一次I/O到文件系統(tǒng),并且執(zhí)行磁盤flush從文件系統(tǒng)到磁盤中
1 表示每次事務提交同步I/O到文件系統(tǒng),并且執(zhí)行flush從文件系統(tǒng)到磁盤中
2 表示每次事務提交同步I/O到文件系統(tǒng),但是不指定flush同步到磁盤文件,由操作系統(tǒng)決定同步.
innodb_log_buffer_size = 用戶空間事務日志的緩沖的大小
innodb_log_file_size = 日志文件的大小
innodb_log_file_in_group = 日志文件的個數(shù)
innodb_log_group_home_dir = 日志文件的家目錄
配置:
---------------------------------------------
錯誤日志:
log_error = /mydata/errorlogs/error-log.log 指定錯誤日志的文件
log_warnings = 1 開啟警告寫入錯誤日志文件中
---------------------------------------------
查詢?nèi)罩?
general_log = Off 表示關閉寫入查詢?nèi)罩?br />
general_log_file = PATH 這個參數(shù)可以不配置
log = Off 表示并不把非查詢語句寫入查詢?nèi)罩局?br />
----------------------------------------------
慢查詢?nèi)罩?
slow_query_log = On 表示開啟慢查詢?nèi)罩?br />
log_slow_queries = On 表示開啟慢查詢?nèi)罩?br />
slow_query_log_file = PATH 指定查詢?nèi)罩镜奈恢?br />
log_output = FILE 指定查詢?nèi)罩镜妮敵鲱愋褪菍懭胛募?br />
-----------------------------------------------
二進制日志:
sql_log_bin = On 這個是會話級別的參數(shù) 是不能寫入配置文件中
log_bin = /mydata/logbins/log-bin 指定二進制日志文件的位置文件名
log_bin_index = /mydata/data/log-bin.index 指定二進制日志索引文件
binlog_format = MIXED 指定二進制日志的格式
binlog_cache_size = 指定事務性語句的用戶空間二進制緩沖大小 每一個連接用戶都會分配獨立的內(nèi)存空間
binlog_stmt_cache_size = 指定非事務性語句的用戶空間的二進制緩沖的大小 每一個連接的用戶都會分配獨立的內(nèi)存空間
max_binlog_cache_size = 最大值 不需要設置
max_binlog_stmt_cache_size = 最大值 不需要設置
expire_logs_days = 0 是否過期二進制日志文件 0表示不過期
sync_binlog = 0 同步二進制日志 文件系統(tǒng)(內(nèi)存緩沖) 到 磁盤 至于用戶空間到文件系統(tǒng)這個過程是內(nèi)部的機制自動完成的.
0 表示由操作系統(tǒng)決定從文件系統(tǒng)到磁盤的同步
n 表示每n次寫入文件系統(tǒng)的緩沖就同步到磁盤中
---------------------------------------------------
事務性日志:
innodb_log_buffer_size = 用戶空間事務日志緩沖的大小
innodb_log_file_size = 指定事務日志文件的大小
innodb_log_files_in_group = 事務日志的個數(shù)
innodb_log_group_home_dir = 事務日志的位置
innodb_flush_log_at_trx_commit = 事務日志的同步機制
0 表示每秒由用戶空間innodb_log_buffer_size 到 文件系統(tǒng)緩沖再調(diào)用系統(tǒng)fsync()函數(shù)同步到磁盤中
1 表示每次事務提交從用戶空間innodb_log_buffer_size 到 文件系統(tǒng) 再調(diào)用系統(tǒng)fsync()函數(shù)同步到磁盤中
2 表示每次事務提交從用戶空間innodb_log_buffer_size 到文件系統(tǒng) 文件系統(tǒng)到磁盤是由系統(tǒng)調(diào)用函數(shù)執(zhí)行的.
總結(jié)
以上是生活随笔為你收集整理的MySQL的日志管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL的查询缓存
- 下一篇: MySQL的MyISAM和InnoDB存