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 =
log_output = table,file,none
file: gerenal_log
general_log = : 是否啟用查詢日誌
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 = :是否啟用慢查詢日誌
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 = :1|0 也是可以的,#是否記錄警告資訊於錯誤日誌中;
4、二進位制日誌:不能使用cat等命令開啟,可能會導致檔案損壞
記錄導致資料改變或潛在導致資料改變的sql語句;
功能:用於通過「重放」日誌檔案中的事件來生成資料副本;
show logs:檢視主伺服器端處於由mysqld維護狀態中的二進位制日誌檔案;
show master status: 檢視使用的二進位制日誌檔案;
二進位制日誌記錄格式:
基於「語句」記錄;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)
事件的型別:(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
-p5、中繼日誌:
複製架構中,從伺服器用於儲存從主伺服器的二進位制日誌中讀取到的事件;
6、事務日誌(innodb儲存引擎):
幫助事務性儲存引擎儲存資料的,事務型儲存引擎自行管理和使用的;
事務型儲存引擎自行管理和使用
redo log
undo log
mysql 清理碎片
顯示你資料庫中存在碎片的全部列表 select table schema,table name,data free,engine from information schema.tables where table schema not in information schema mysql and...
mysql 碎片清理
在mysql中,我們經常會使用varchar text blob等可變長度的文字資料型別。不過,當我們使用這些資料型別之後,我們就不得不做一些額外的工作 mysql資料表碎片整理。那麼,為什麼在使用這些資料型別之後,我們就要對mysql定期進行碎片整理呢?現在,我們先來看乙個具體的例子。在這裡,我們...
Mysql日誌清理
四種日誌 錯誤日誌記錄著mysqld啟動和停止,以及伺服器在執行過程中發生的錯誤的相關資訊。資料庫報錯時可以檢視 伺服器接收到的每乙個查詢或是命令,無論這些查詢或是命令是否正確甚至是否包含語法錯誤,general log 都會將其記錄下來。mysql預設關閉,因為開銷太大 慢日誌記錄執行時間過長和沒...