mysql 重要日志文件匯總
作者:丁儀
來源:https://chengxuzhixin.com/blog/post/mysql_zhong_yao_ri_zhi_wen_jian_zong_jie.html
日志是所有應(yīng)用的重要數(shù)據(jù),MySQL 也有錯誤日志、查詢?nèi)罩?、慢查詢?nèi)罩尽⑹聞?wù)日志等。本文簡單總結(jié)下各種日志,以備查閱。
二進制日志 binlog
二進制日志 binlog 用于記錄數(shù)據(jù)庫執(zhí)行的寫入性操作(不包括查詢)信息,以二進制的形式保存在磁盤中。使用任何存儲引擎的 mysql 數(shù)據(jù)庫都會記錄 binlog 日志。在 binlog 中記錄的是邏輯日志,也就是 SQL 語句。SQL 語句執(zhí)行后,binlog 追加到日志文件中??梢栽O(shè)置 binlog 文件大小,超過大小后,自動創(chuàng)建新的文件。
binlog 有三種格式,分別為 STATMENT、ROW 和 MIXED。
- STATMENT:把會修改數(shù)據(jù)的 sql 語句記錄到 binlog 中;是 MySQL 5.7.7 之前的默認格式;
- ROW:不記錄每條 sql 語句的上下文信息,僅記錄哪條數(shù)據(jù)被修改了;是 MySQL 5.7.7之后的默認格式;
- MIXED:基于 STATMENT 和 ROW 兩種模式的混合復(fù)制,一般使用 STATEMENT 模式,對于無法復(fù)制的操作使用 ROW 模式;
在實際應(yīng)用中,binlog 主要用于主從復(fù)制和數(shù)據(jù)恢復(fù)。主從復(fù)制是指在 master 機器開啟 binlog,通過某種方式把 binlog 發(fā)送給 slave 機器,slave 機器根據(jù) binlog 內(nèi)容進行數(shù)據(jù)操作,從而保證主從數(shù)據(jù)一致性。另外,通過使用 mysqlbinlog 工具可以從 binlog 恢復(fù)數(shù)據(jù)。
在 MySQL 5.7 之后,內(nèi)置默認引擎已經(jīng)變更為 InnoDB 引擎。 InnoDB 引擎在處理事務(wù)時,可以設(shè)置日志寫入磁盤的時機,默認情況下是每次 commit 時寫入磁盤。也可以通過 sync_binlog 參數(shù)設(shè)置成系統(tǒng)自動判斷或每 N 個事務(wù)寫入一次。
查詢?nèi)罩?br />
查詢?nèi)罩居涗浟怂袛?shù)據(jù)庫請求的信息。無論這些請求是否得到了正確的執(zhí)行。開啟之后對性能有比較大的影響,因此使用不多。
慢查詢?nèi)罩?/strong>
慢查詢?nèi)罩居脕碛涗泩?zhí)行時間超過某個閾值的語句。執(zhí)行時間閾值可以通過 long_query_time 來設(shè)置,默認是 10 秒。慢查詢?nèi)罩拘枰謩娱_啟,對性能有一些影響,一般不建議開啟。慢查詢?nèi)罩局С謱⒂涗泴懭胛募?,也支持寫入?shù)據(jù)庫表。
事務(wù)日志 redo log
事務(wù)的四大特性之一是持久性。因此事務(wù)成功后,數(shù)據(jù)庫的修改永久保存,不能因為任何原因而回到原來的狀態(tài)。redo log 是 InnoDB 引擎層實現(xiàn)的日志,并不是所有引擎都有,用來記錄事務(wù)對數(shù)據(jù)頁的修改,可以在崩潰時用于恢復(fù)數(shù)據(jù)。redo log 包括內(nèi)存中的日志緩沖和磁盤上的日志文件。執(zhí)行 SQL 語句后,先寫入日志緩沖,后續(xù)再一次性把多條緩沖寫入文件。
在 InnoDB 中,數(shù)據(jù)頁也會刷盤,redo log 存在的意義主要就是降低對數(shù)據(jù)頁刷盤的要求。數(shù)據(jù)頁的變更,redo log 沒有必要全部保存。如果數(shù)據(jù)頁刷盤比 redo log 快,則 redo log 的記錄對于數(shù)據(jù)恢復(fù)意義不大;如果數(shù)據(jù)頁刷盤比 redo log 慢,則 redo log 中比數(shù)據(jù)頁快的部分可以用來快速恢復(fù)數(shù)據(jù)。因此 redo log 日志文件大小是固定的,當(dāng)寫到結(jié)尾時,會回到開頭循環(huán)寫日志。

事務(wù)日志 undo log
事務(wù)的四大特性之一是原子性。對數(shù)據(jù)庫的一系列操作,要么全部成功,要么全部失敗,不允許部分成功部分失敗。因此,需要記錄數(shù)據(jù)的邏輯變化。原子性通過 undo log 來實現(xiàn),比如事務(wù)中執(zhí)行一條 insert 語句,undo log 就會記錄一條 delete 語句;事務(wù)中執(zhí)行一條 update 語句,undo log 就會記錄一條相反的 update 語句。這樣在事務(wù)失敗時,就可以通過 undo log 來回滾到事務(wù)之前的狀態(tài)。
以上就是mysql 重要日志文件匯總的詳細內(nèi)容,更多關(guān)于MySQL 日志文件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Navicat連接MySQL提示1045錯誤解決(重置MySQL密碼)
連接MySQL數(shù)據(jù)庫時難免會遇到1045錯誤,主要是因為用戶輸入的用戶名或密碼錯誤被拒絕訪問,如果不想重裝,需要找回密碼或者重置密碼,這篇文章主要給大家介紹了關(guān)于Navicat連接MySQL提示1045錯誤解決的方法,主要是重置MySQL密碼,需要的朋友可以參考下2023-04-04
Windows安裝MySQL后怎么開啟root的網(wǎng)絡(luò)訪問權(quán)限
Windows安裝MySQL后默認只能本機訪問,怎么開啟網(wǎng)絡(luò)訪問,本文給大家介紹介紹了Windows安裝MySQL后怎么開啟root的網(wǎng)絡(luò)訪問權(quán)限,需要的朋友可以參考下2023-08-08
mysql安裝數(shù)據(jù)庫初始化失敗問題解決方法保姆級教程
這篇文章主要給大家介紹了關(guān)于mysql安裝數(shù)據(jù)庫初始化失敗問題解決方法保姆級教程,包括更改電腦名稱、確保防火墻設(shè)置、清理殘留文件、檢查權(quán)限和配置文件等,需要的朋友可以參考下2025-01-01
Mysql Error Code : 1436 Thread stack overrun
I meet with the error while calling stored procedures from the MySql in my Mac system server. It similar as the description below2011-07-07
Linux下將數(shù)據(jù)庫從MySQL遷移到MariaDB的基礎(chǔ)操作教程
這篇文章主要介紹了將數(shù)據(jù)庫從MySQL遷移到MariaDB的基礎(chǔ)操作教程,當(dāng)然遷移之前不要忘記數(shù)據(jù)庫的備份!需要的朋友可以參考下2015-11-11
MySQL數(shù)據(jù)庫多表聯(lián)合查詢代碼示例
所謂聯(lián)合就是把多個表的記錄往一起合并,一起進行查詢,也叫多表查詢,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫多表聯(lián)合查詢的相關(guān)資料,需要的朋友可以參考下2024-01-01

