innobackupex命令備份全過程圖解

chenfeng發表於2018-11-30

備份開始時會先開啟一個後臺檢測程式,實時檢測mysql redo日誌(事務日誌)的變化,一旦發現redo日誌中有新日誌寫入,立刻記錄後臺日誌檔案xtrabackup_log檔案中,之後複製Innodb的資料檔案和系統表空間檔案ibdata1,複製結束後,執行flush tables with read lock操作,複製.frm,.MYI,.MYD等檔案(執行flush tables with read lock的目的是為了防止讀取資料的時候發生DDL操作,並且在這一刻獲取binlog的位置),最後發出unlock tables,把表設定為可讀寫狀態,最終終止xtrabackup_log檔案的寫入。過程見下圖:


完備恢復:恢復階段會啟動xtrabackup內嵌的innodb例項,回放xtrabackup日誌xtrabackup_log檔案中的事務,將已經提交的事務變更應用到innodb資料檔案、表空間,同時回滾未提交的事務,這一過程類似innodb例項的故障恢復。

全量恢復過程見下圖:


增量備份:innobackupex增量備份過程中的增量處理,其實主要相對innodb而言,對myisam和其他儲存引擎而言,仍然是每次一個全備。增量備份過程主要是通過拷貝innodb有變更的頁,這些變更資料頁指的是LSN大於xtrabackup_checkpoints中給定的LSN,增量備份是基於全備的,第一次增量備份的資料必須要基於最近一次全備,之後每次增備都是基於上一次增備的基礎上進行。過程跟完備一樣,只是增備時在複製資料檔案時複製的是上一次備份後從大於xtrabackup_checkpoints開始的改變的頁。增量備份過程見下圖:



增量恢復:和全備恢復類似,也需要兩步,一部分資料檔案的恢復,這裡資料檔案包括全備份、增量備份和xtrabackup_log檔案中已提交事務的回放,第二部分是對未提交事務的回滾。

過程見下圖1和2:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2222281/,如需轉載,請註明出處,否則將追究法律責任。

相關文章