mysql 清理 reley_MySQL日志相关
MySQL日志:
查詢日志:query log
慢查詢日志:查詢執行時長超過指定時長的查詢操作所記錄日志 #slow query log
錯誤日志:error log 包括服務自己啟動或關閉的正常信息
二進制日志:binary log 非常重要的日志,數據恢復
中繼日志:reley log MySQL復制中用到的日志
事務日志:transaction log
ACID, 隨機I/O轉換為順序I/O
1、查詢日志:
記錄查詢操作:
記錄在文件中:file
表中:table
mysql> SHOW GLOBAL VARIABLES LIKE '%log%';
log_output = {TABLE|FILE|NONE}
log_output = TABLE,FILE,NONE
FILE: gerenal_log
general_log = {ON|OFF}: 是否啟用查詢日志
general_log_file = HOSTNAME.log:當log_output有FILE類型時,日志信息的記錄位置;
2、慢查詢日志:
查詢時長超過指定時長的查詢操作:
mysql> SELECT @@GLOBAL.long_query_time; #查看執行的指定時長
+--------------------------+
| @@GLOBAL.long_query_time |
+--------------------------+
| 10.000000 |
+--------------------------+
1 row in set (0.01 sec)
mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
mysql> SET GLOBAL long_query_time=''; #設置臨時修改,如需要永久生效,需要寫入配置文件
slow_query_log = {ON|OFF}:是否啟用慢查詢日志
slow_query_log = /path/to/somefile: 日志文件路徑
log_slow_filter = admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
慢查詢日志過濾器,哪一種查詢需要記錄,哪種不需要記錄
log_slow_rate_limit = #指明記錄的速率
log_slow_verbosity = #詳細級別
3、錯誤日志:#默認是不開啟的
記錄的并非完全的錯誤日志信息,記錄MySQL的正常啟動與關閉的日志信息
mysqld啟動和關閉過程中輸出的信息;
mysqld運行中產生的錯誤信息;
event scheduler運行一個event時產生的日志信息;
在主從復制架構中的從服務器上啟動從服務器線程時產生的日志信息;
log_error = /path/to/somefile #指向絕對路徑
log_warnings = {ON|OFF}:1|0 也是可以的,#是否記錄警告信息于錯誤日志中;
4、二進制日志:不能使用cat等命令打開,可能會導致文件損壞
記錄導致數據改變或潛在導致數據改變的SQL語句;
功能:用于通過“重放”日志文件中的事件來生成數據副本;
SHOW {BINARY | MASTER} LOGS:查看主服務器端處于由mysqld維護狀態中的二進制日志文件;
SHOW MASTER STATUS: 查看使用的二進制日志文件;
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]:顯示指定的二進制日志文件中的相關事件
二進制日志記錄格式:
基于“語句”記錄;statement
基于“行”記錄;row
“混合模式” :mixed,讓系統自動判定該基于那種方式進行;
二進制日志文件的構成:
兩類文件
日志文件:文件名前綴.文件名后綴
索引文件:文件名前綴.index #文本格式
服務器變量:
log_bin = /path/to/somefile 二進制日志記錄的文件位置,通常為OFF
binlog_format = STAETMENT|ROW|MIXED 二進制日志記錄的格式;
sql_log_bin = ON 是否記錄二進制日志
max_binlog_size = 1073741824 #單個二進制日志文件的最大體積,默認是1G;
注意:(1)到達最大值會自動滾動;(2)文件到達上限時的大小未必會到達指定的最大值
二進制日志文件的單文件上限;
max_binlog_cache_size = 18446744073709547520
max_binlog_stmt_cache_size = 18446744073709547520
expire_logs_days = 0 二進制日志的自動清理功能默認設置為0,不啟動該功能。
sync_binlog = 0|1:設定多久同步一次二進制日志文件;
0表示不同步;任何正值都表示記錄多少個語句后同步一次;
1表示同步數據,當遇到事務commit時將進行二進制日志同步一次;
二進制日志事件的格式:
# 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)
GTID事件專屬:Global Rransction ID;
事件所屬的全局事務的GTID:(GTID 0-1-2)
二進制日志的查看命令:
mysqlbinlog:客戶端命令工具
查看二進制文件事件信息
mysqlbinlog [OPTIONS] log_files
./mysqlbinlog /usr/log/mysql-bin.000003 二進制文件的覺得路徑
mysqlbinlog
-j, --start-position=#:從指定的事件位置查看
--stop-position=#:只顯示到指定的事件位置
--start-datetime=name
--stop-datetime=name
YYYY-MM-DD hh:mm:ss
-u
-h
-p
5、中繼日志:
復制架構中,從服務器用于保存從主服務器的二進制日志中讀取到的事件;
6、事務日志(innodb存儲引擎):
幫助事務性存儲引擎保存數據的,事務型存儲引擎自行管理和使用的;
事務型存儲引擎自行管理和使用
redo log
undo log
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的mysql 清理 reley_MySQL日志相关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab生成图像路径列表和标签,打乱
- 下一篇: centos mysql自动备份_Cen