MySQL使用Xtrabackup備份流程詳解
01 背景
Xtrabackup是Percona公司開發(fā)的一款開源的MySQL熱備份工具,之前的工作中也是經(jīng)常使用,但是也僅僅是停留在使用的階段,對于這個工具的細節(jié),并沒有做過多的研究,今天細細看了一下過程,還是有點收獲的,寫下來記錄一下,有不對的地方,還請指正。
Xtrabackup工具能夠備份InnoDB,XtraDB和MyISAM的表,它支持Percona Server的所有版本,而且兼容MySQL,也兼容MariaDB,還支持一些高級的特性,例如流方式備份、壓縮、加密、以及增量備份等等。
優(yōu)點如下:
1、無需停止數(shù)據(jù)庫進行InnoDB熱備份,在50G以上的數(shù)據(jù)量備份時候,應(yīng)該是首選工具。
2、支持增量備份MySQL并通過流傳輸?shù)狡渌姆?wù)器上。
3、備份MySQL的時候不會增加服務(wù)器的負載。
02 簡介
在這個工具中,最主要的應(yīng)用程序有兩個,分別是innobackupex與xtrabackup,其中前者是perl腳本,后面是C++變異的二進制程序,需要注意,后者不能備份除了Innodb存儲引擎的其他表。Innobackup是對xtrabackup的封裝,可以備份非Innodb的表。
以上所述,可能大家都知道,這里需要留意,由于mysql等系統(tǒng)數(shù)據(jù)庫中的表有些存儲引擎是基于MyISAM的,所以一般情況下使用innobackupex來備份系統(tǒng)庫。
03 工作流程
下面講述Innobackupex和Xtrabackup的工作流程,可能有些交叉的部分,二者共同完成備份任務(wù)。
主要的工作流程如下:
1、innobackupex啟動之后,首先會創(chuàng)建xtrabackup進程,并且啟動,然后等待xtrabackup完成innodb相關(guān)文件的備份。
2、xtrabackup在備份InnoDB相關(guān)文件時,會開啟如下兩種線程,一種是ibd復(fù)制線程,負責(zé)復(fù)制表空間ibd文件,一種是redo log復(fù)制線程,負責(zé)復(fù)制redo log信息。其中redo log線程先于ibd線程開始,redo log線程會從最近的checkpoint點開始復(fù)制redo log,(關(guān)于checkpoint,之前的文章中講過),復(fù)制完成之后啟動ibd線程。需要注意的是,在這個過程中,innobackupex進程處于等待狀態(tài),等待被xtrabackup進程喚醒。
3、xtrabackup復(fù)制ibd完成之后(redo log線程可能還在工作),通知innobackupex進程,同時自己進入wait狀態(tài)。
4、innobackupex收到通知,會執(zhí)行備份鎖,渠道一致性的位點,然后開始復(fù)制非innodb的文件。
5、當(dāng)非innodb文件復(fù)制完成之后,innobackupex開始獲取binlog的位置。
6、創(chuàng)建xtrabackup_binlog_info文件,并將binlog的點位信息寫入文件中。
7、接著,innobackupex會發(fā)起一個通知給xtrabackup進程,同時自己進入等待狀態(tài)。
8、xtrabackup進程收到通知后,就會停止redo log的復(fù)制線程,并告知redo log復(fù)制完畢,然后通知innodbbackupex開始釋放鎖。
9、緊接著,就是一些收尾工作,釋放資源,備份元數(shù)據(jù)信息,打印備份目錄,備份binlog的位置信息,以及寫入xtrabackup_info文件信息等。
10、innobackupex進程等待xtrabackup進程結(jié)束后退出。
04 一些疑問
1、為什么要復(fù)制redo log?
這是因為備份ibd文件的過程中,該文件可能被修改,這樣備份出來的文件就有可能是包含臟數(shù)據(jù)的,在恢復(fù)的時候,需要聽過redo log進行數(shù)據(jù)恢復(fù),也就是應(yīng)用已經(jīng)提交的事務(wù),回滾那些沒有提交的事務(wù)。
2、innobackupex和xtrabackup是如何交互的?
其實本質(zhì)是通過刪除和創(chuàng)建兩個特定的文件,這兩個進程都會監(jiān)聽指定目錄下是否包含特定的文件,如果包含,就進行工作,不包含,則停止工作,進入等待狀態(tài)。
05 備份文件
一般備份完成之后,備份目錄中會產(chǎn)生7個重要的文件,包含:
- backup-my.cnf:此文件包含了備份所需的my.cnf中的選項?;謴?fù)的時候,會依賴這個文件。
- xtrabackup_checkpoints:記錄備份的類型、備份的狀態(tài)信息、增量備份依賴于這個信息
- xtrabackup_binlog_info:該文件記錄備份時候的二進制文件信息和偏移量位置信息。
- xtrabackup_binlog_pos_innodb:該文件記錄了innodb表的二進制文件和位置信息,當(dāng)執(zhí)行--apply-log的時候,會創(chuàng)建這個文件。
- xtrabackup_binary:該文件記錄備份進程使用的xtrabackup二進制文件。
- xtrabackup_logfile:該文件記錄apply log操作時所需的數(shù)據(jù),如果apply log的時間比較長,這個文件就會很大。
- xtrabackup_slave_info:這個文件很常用,它記錄了在建立主從關(guān)系的時候,change master 語句所需要的信息。
以上就是MySQL使用Xtrabackup備份流程詳解的詳細內(nèi)容,更多關(guān)于MySQL使用Xtrabackup備份的資料請關(guān)注腳本之家其它相關(guān)文章!
- 安裝使用Percona XtraBackup來備份恢復(fù)MySQL的教程
- MySQL中使用innobackupex、xtrabackup進行大數(shù)據(jù)的備份和還原教程
- 利用Xtrabackup工具備份及恢復(fù)(MySQL DBA的必備工具)
- 編寫腳本令Xtrabackup對MySQL數(shù)據(jù)進行備份的教程
- mysql中xtrabackup全量備份/增量備份及恢復(fù)
- mysql xtrabackup 備份恢復(fù)實現(xiàn)分享
- MySQL數(shù)據(jù)xtrabackup物理備份的方式
- xtrabackup備份還原MySQL數(shù)據(jù)庫
- MySQL xtrabackup 物理備份原理解析
- 使用xtrabackup實現(xiàn)mysql備份
- MySQL物理備份之Percona XtraBackup的實現(xiàn)示例
相關(guān)文章
解決mysql @@sql_mode問題---only_full_group_by
這篇文章主要介紹了解決mysql @@sql_mode問題---only_full_group_by,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09
MySQL8.0/8.x忘記密碼更改root密碼的實戰(zhàn)步驟(親測有效!)
忘記root密碼的場景還是比較常見的,特別是自己搭的測試環(huán)境經(jīng)過好久沒用過時,很容易記不得當(dāng)時設(shè)置的密碼,下面這篇文章主要給大家介紹了關(guān)于MySQL8.0/8.x忘記密碼更改root密碼的實戰(zhàn)步驟,親測有效!需要的朋友可以參考下2023-04-04
Mysql樹形結(jié)構(gòu)的數(shù)據(jù)庫表設(shè)計方案
樹形結(jié)構(gòu)對大家來說應(yīng)該都不陌生,在日常開發(fā)中經(jīng)常會遇到,下面這篇文章主要給大家介紹了關(guān)于Mysql樹形結(jié)構(gòu)的數(shù)據(jù)庫表設(shè)計的相關(guān)資料,文中通過示例代碼的非常詳細,需要的朋友可以參考下2021-09-09

