MySQL是一個開源的關系型數據庫管理系統,它的日志功能非常強大,可以記錄數據的變化,以及對數據庫的操作,這些日志也被稱為二進制日志,主要分為三種類型:binlog,redo log以及undo log。
binlog是二進制日志,主要是用于記錄所有對數據庫進行的修改操作,包括增刪改操作,它可以記錄所有的語句以及操作時間戳,從而在需要的時候可以對數據庫進行數據恢復和復制,這對于數據的備份和容災非常有用。
# 查看binlog文件列表 SHOW BINARY LOGS; # 查看指定的binlog文件中記錄的操作語句 mysqlbinlog [filename]
redo log是重做日志,主要是用于記錄所有對數據庫文件進行的修改操作,包括數據頁,數據文件等等,它主要是為了保證MySQL的事務特性,從而避免數據的損壞和丟失,每個redo log記錄的大小是相等的,一旦記錄滿,就會自動覆蓋以前的數據,因此一定要保證redo log大小足夠。
# 查看redo log信息 SHOW ENGINE INNODB STATUS;
undo log是撤銷日志,主要是用于記錄對數據庫進行的撤銷操作,比如ROLLBACK,從而可以保證數據庫的一致性,undo log和redo log不一樣,它并不會像redo log一樣覆蓋已經操作的數據,而是保留當前的數據狀態,只要一旦發生回滾操作,就會將數據恢復到先前的狀態,非常有用。
# 查看undo log信息 SELECT * FROM information_schema.INNODB_TRX\G