Percona XtraBackup是基於InnoDB的崩潰復原功能。複製InnoDB資料文件,導致內部不一致的資料; 但隨後它對文件執行崩潰恢復,使它們再次成為一致,可用的資料庫。
這是因為InnoDB維護一個重做日誌,也稱為交易日誌。這包含對InnoDB資料的每個變更的記錄。當InnoDB 啟動時,它會檢查資料檔案和交易日誌,並執行兩個步驟。它將提交的交易日誌條目套用至資料文件,並對修改資料但未提交的任何交易執行撤銷操作。
Percona XtraBackup透過記錄日誌序號(LSN)開始運作,然後複製掉資料檔。這需要一小會時間來完成,所以如果檔案正在改變,那麼它們反映了資料庫在不同時間點的狀態。同時,Percona XtraBackup運行一個後台進程,監視事務日誌文件,並從中複製更改。 Percona XtraBackup需要不斷地這樣做,因為交易日誌是以循環方式編寫的,並且可以在一段時間後重複使用。 Percona XtraBackup從資料檔案開始執行以來每次變更都需要交易日誌記錄。
Percona XtraBackup將使用備份鎖定 ,作為一個輕量級替代。此功能在Percona Server 5.6+中可用。 Percona XtraBackup使用這個自動複製非InnoDB數據,以避免阻塞修改InnoDB表的DML查詢。當伺服器支援備份鎖定時,xtrabackup將首先複製InnoDB數據,運行並複製MyISAM表和.frm檔案。一旦完成,文件的備份將開始。它將備份.frm,.MRG,.MYD,.MYI,.TRG,FLUSH TABLES WITH READ LOCKLOCK TABLES FOR BACKUP.par
#注意
鎖定只對MyISAMACKUP. #和其他非InnoDB表,只有 在 Percona XtraBackup完成所有InnoDB / XtraDB資料和日誌後備份。 Percona XtraBackup將使用備份鎖定 ,作為一個輕量級替代。此功能在Percona Server 5.6+中可用。 Percona XtraBackup使用這個自動複製非InnoDB數據,以避免阻塞修改InnoDB表的DML查詢。 FLUSH TABLES WITH READ LOCK
之後,xtrabackup將使用阻止所有操作,可能更改二進位日誌位置或 或 報告。然後xtrabackup將完成複製REDO日誌檔案和取得二進位日誌座標。在這完成之後xtrabackup將解鎖二進位日誌和表。 LOCK BINLOG FOR BACKUPExec_Master_Log_PosExec_Gtid_SetSHOW MASTER/SLAVE STATUS最後,二進位日誌位置將被列印到STDERR和xtrabackup 將退出退出如果一切正常。 要注意的是STDERR的xtrabackup不是寫在任何檔案中。您必須將其重定向到一個文件,例如,。 xtrabackup OPTIONS2> backupout.log它也會在備份的目錄中建立以下檔案。 在準備階段,Percona XtraBackup使用複製的交易日誌檔案對複製的資料檔案執行崩潰復原。完成此操作後,資料庫就可以復原和使用。
備份的MyISAM和InnoDB表最終將彼此一致,因為在準備(復原)過程之後,InnoDB的資料會前滾到備份完成的點,而不會回滾到該點開始。這個時間點匹配所採取的位置,因此MyISAM資料和準備的 InnoDB資料是同步的。 FLUSH TABLES WITHREAD LOCK
簡而言之,這些工具允許您透過複製資料文件,複製日誌檔案以及將日誌應用到資料的各種組合來執行串流和增量備份等操作。以上是詳細介紹xtrabackup的備份原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!