mysql的日志文件及其作用


MySQL中有七種日志文件,分別是:

  • 重做日志(redo log)
  • 回滾日志(undo log)
  • 二進制日志(binlog)
  • 中繼日志(relay log)
  • 錯誤日志(errorlog)
  • 慢查詢日志(slow query log)
  • 一般查詢日志(general log)

下面介紹前4種。。。。

1. redo log 

 a.作用

  保持了事務的持久性, 采用循環寫的方式將寫數據,寫入方式請參考https://www.cnblogs.com/zhixinSHOU/p/13214933.html

 b.內容

  物理格式的日志,記錄的是物理數據頁面的修改的信息,其redo log是順序寫入redo log file的物理文件中去的。

 b.開始節點

  事務開始之后就產生redo log,redo log的落盤並不是隨着事務的提交才寫入的,而是在事務的執行過程中,便開始寫入redo log文件中。

 c.結束節點

  當對應事務的臟頁寫入到磁盤之后,redo log的使命也就完成了,重做日志占用的空間就可以重用(被覆蓋)。

2.undo log

 a.作用

  保證了事務的原子性,當事務開始回滾的時候會用到

 b.內容:

  邏輯格式的日志,在執行undo的時候,僅僅是將數據從邏輯上恢復至事務之前的狀態,而不是從物理頁面上操作實現的,這一點是不同於redo log的。

 c.開始節點:

  事務開始之前,將當前是的版本生成undo log,undo 也會產生 redo 來保證undo log的可靠性

 d.結束節點:

  當事務提交之后,undo log並不能立馬被刪除,而是放入待清理的鏈表,由purge線程判斷是否由其他事務在使用undo段中表的上一個事務之前的版本信息,決定是否可以清理undo log的日志空間。

3. binlog

 a.作用

  主從復制,

  前提:主庫將操作記錄存到binlog中,

  在發生主從復制時,

  1. 主庫會發起一個log dump線程,用來給從庫I/O線程傳binlog;

  2.從庫發起一個I/O線程接收binlog文件,並將得到的binlog文件寫到本地relay-log(中繼日志)中,

  3.從庫發起一個SQL 讀取中繼日志文件,逐一執行sql語句

在主從復制的時候需要注意的事

  1) Master將操作語句記錄到binlog日志中,然后授予slave遠程連接的權限(master一定要開啟binlog二進制日志功能,通常為了數據安全考慮,salve也開啟binlog功能)

  2) Slave開始倆個線程:IO線程和sql線程,其中:IO線程負責讀取master的binlog內容到中繼日志relay log里,sql線程負責從中繼日志里讀取binlog內容,並更新到slave的數據庫,這樣就能保持slave數據和master數據保持一致了

  3) 至少有倆個Mysql的服務

  4) 最好確保master和slave服務器上的Mysql版本相同,或者主服務器小於子服務器

  5) Master和slave 倆節點時間需同步

4.relay-log

  作用已經在上面介紹過了,不再重復介紹了

  

已經


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM