MySQL中幾個重要的文件

1、數據庫層面mysql

  • 錯誤日誌文件(error log)
  • 二進制日誌文件(binary log)
  • 慢查詢日誌(slow log)
  • 全量日誌(general log):general log 會記錄MySQL數據庫全部操做的SQL語句,包含select和show。該功能默認是關閉的,由於log的量會很是龐大。

其中log_output參數,能夠取FILE、TABLE、NONE三個值。若該參數指定爲NONE,即便開啓了general log也不會記錄log。若該參數指定爲TABLE,則會在mysql數據庫下建立一個general_log 表。該參數不單單影響general log 的存儲方式,還會影響到slow log的存儲方式。通常是使用FILE的存儲方式。sql

  • 審計日誌(audit log)
  • 中繼日誌(relay log):relay log是主從複製中,從服務器上一個重要的文件。從服務器的I/O線程將主服務器的binary log 讀取過來並記錄到從服務器本地文件(relay log)中,而後從服務器的SQL線程會讀取relay log的內容並應用到從服務器。
  • Pid文件:MySQL數據庫是一個單進程多線程模型的數據庫,實例啓動後,會將本身爲惟一進程號記錄到本身的Pid文件中。Pid文件存放在數據目錄(/data/mysql/)下,命名規則是將主機名做爲前綴。
  • Socket文件:mysql數據庫有兩種鏈接方式,網絡鏈接和本地鏈接,mysql.sock文件是服務器與本地客戶端進行通訊發UNIX套接字文件,其默認位置是/tmp/mysql.sock.
  • 表結構文件:MySQL8.0以前把以.frm結尾的文件稱爲表結構文件。從8.0開始frm表的定義被消除,把文件中的表數據都寫到了系統表空間,經過利用InnoDB存儲引擎實現表DDL語句操做的原子性(在該版本以前是沒法實現DDL語句的原子性的,如truncate是沒法回滾的)。

2、存儲引擎層面數據庫


  在InnoDB存儲引擎層面主要分爲兩種日誌,一種是redo log 一種是undo log。InnoDB支持事物、支持MVCC多版本併發控制。InnoDB的多版本是經過undo 和回滾段來實現的。InnoDB是索引組織表,每行記錄都包含DB_ROW_ID、DB_TRX_ID、DB_ROLL_PTR和DELETE_BIT幾個隱藏字段。DB_TRX_ID:用來標識最近一次對本行記錄作修改的事務的標識符,即最後一次修改本行記錄的事務id。delete操做在內部來看是一次update操做,更新行中的刪除標識位DELELE_BIT。
DB_ROLL_PTR:指向當前數據的undo log記錄,回滾數據經過這個指針來尋找記錄被更新以前的內容信息。DB_ROW_ID:包含一個隨着新行插入而單調遞增的行ID, 當由innodb自動產生彙集索引時,彙集索引會包括這個行ID的值,不然這個行ID不會出如今任何索引中。DELELE_BIT:用於標識該記錄是否被刪除。服務器

 

  • redo log,又稱重作日誌,用於記錄事物操做變化,記錄的是事物被修改後的值,無論事物是否提交都會記錄下來,在實例和介質失敗時,如數據庫掉電,就能夠利用redo log 恢復到掉電前的時刻,以此來保證數據的完整性。
  • undo log,對記錄的變動操做時不只會產生redo記錄,也會產生undo記錄(insert、update、delete)。但undo只記錄變動前的舊數據。一般可使用undo日誌來實現回滾操做,保證事務的一致性。
相關文章
相關標籤/搜索