- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
錯誤日志
錯誤日志不用多說,記錄了MySQL運行過程中的錯誤信息,當出現問題時,我們可以通過錯誤日志查找線索。
慢查詢日志
可以通過參數long_query_time來設置時間,當sql語句執行超過指定的時間,就會被記錄下來,用來進行sql調優。
還有一個參數log_queries_not_using_indexs,如果運行的sql語句沒有使用索引,就會記錄下來。但是不能一直這樣記錄,會導致文件過大,索引可以通過log_throttle_queries_not_using_indexes來表示每分鐘允許記錄到slow log的未使用索引的SQL語句的次數。默認為0,表示沒有限制。如果日志記錄到文件中,可以使用mysqldumpslow命令來進行篩選。
慢查詢日志可以輸出到文件中,也可以輸出到表中。可以通過log_output參數指定慢查詢日志輸出到哪里。
在慢查詢日志中都記錄了什么信息,可以通過slow_query_type進行控制。
0表示不將SQL語句記錄到slow log。
1 表示根據運行時間將SQL語句記錄到slow log。
2 表示根據邏輯IO次數將SQL語句記錄到slow log。
3 表示根據運行時間和邏輯IO次數將SQL語句記錄到slow log。
binlog日志
記錄了對數據庫除了查詢的所有操作。可以用來數據恢復、主從復制和判斷數據庫是否被攻擊審計。
sync_binlog參數
binlog日志并不是每次寫的時候都同步到磁盤。因此當數據庫發生宕機的時候,可能會有一部分數據沒有日志中。會跟復制和恢復帶來問題。sync_binlog表示每寫緩沖多少次就同步到磁盤。如果設置位1 即表示每寫一次緩沖就把數據同步到磁盤。但是仍然存在問題,如果事務剛剛把數據寫入日志,但是還沒有執行的情況下宕機。數據庫重啟后會進行回滾,但是寫入binlog的日志不能回滾。可以通過innodb_support_xa=1來解決這個問題。
binlog_format參數
該參數可以設置的值有STATEMENT、ROW、MIXED。
1、 STATEMENT格式的日志,只記錄sql語句
2、 ROW格式的日志,不是記錄SQL語句,而是記錄記錄表的行更改情況。
3、 MIXED格式的日志,根據情況決定使用STATEMENT還是ROW格式記錄日志。
MySQL數據庫的事務格式離別為REPEATABLE READ,跟binlog_format是有關系的,如果設置為READ COMMITED的事務隔離級別,會出現類似丟失更新的現象,從而出現主動數據不一致。如果binlog_format采用的是ROW格式的記錄,就可以將事務隔離級別調整為READ COMMITED來提高性能。
查詢日志
記錄所有的對數據庫的請求,一般不開啟。
重做日志
該日志文件屬于Innodb存儲引擎,記錄了Innodb存儲引擎的食物日志,直觀重要。當執行事務失敗時,該日志就能派上用場。
每個Innodb存儲引擎至少有兩個日志文件組,每個文件組下面至少有兩個重做日志。
參數
Innodb_log-file_size 表示每個重做日志的大小。
Innodb_log_files_in_group 表示每個日志文件組有幾個日志,最少有兩個,默認為2個。
Innodb_mirrored_log_groups 鏡像,為了高可用設計。如果進行了磁盤陣列,可以不設置。
Innodb_log_group_home_dir 日志文件存放的位置,默認為”./”。
Innodb_flush_log_at_trx_commit 當值為0時,代表當提交事務時,并不將事務的重做日志寫入磁盤上的日志文件,而是等待主線程每秒的刷新。
當值為1時,表示執行commit時將重做日志緩沖同步寫到磁盤,即伴有fsync的調用。當事務提交時,必須保證事務已經寫入重做日志文件。當數據庫宕機時,可以通過重做日志文件恢復,并保證可以恢復已經提交的事務。
當值為2時,表示將重做日志異步寫到磁盤。即寫到文件系統的緩存中。因此不能完全保證執行commit時肯定會寫入重做日志文件,知識有這個動作。當數據庫宕機而服務器并沒有宕機的情況下,因為此時未寫入磁盤的事務保存在文件系統緩存中,當恢復時同樣保證數據不丟失。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP