使用xtrabackup進行數(shù)據(jù)備份簡析-創(chuàng)新互聯(lián)

下文內(nèi)容主要給大家?guī)硎褂脁trabackup進行數(shù)據(jù)備份簡析,這里所講到的知識,與書籍略有不同,都是創(chuàng)新互聯(lián)專業(yè)技術(shù)人員在與用戶接觸過程中,總結(jié)出來的,具有一定的經(jīng)驗分享價值,希望給廣大讀者帶來幫助。

創(chuàng)新互聯(lián)是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),網(wǎng)站空間、主機租用、主機托管,四川、重慶、廣東電信服務(wù)器租用,綿陽電信機房機柜租用,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國大陸、港澳臺以及歐美等多個國家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。

前面介紹mysqldump備份方式是采用邏輯備份,其大的缺陷就是備份和恢復(fù)速度都慢,對于一個小于50G的數(shù)據(jù)庫而言,這個速度還是能接受的,但如果數(shù)據(jù)庫非常大,那再使用mysqldump備份就不太適合了。

這時就需要一種好用又高效的工具,xtrabackup就是其中一款,號稱免費版的InnoDB HotBackup。

Xtrabackup實現(xiàn)是物理備份,而且是物理熱備。

Xtrabackup提供了兩種命令行工具:

xtrabackup:專用于備份InnoDB和XtraDB引擎的數(shù)據(jù);

innobackupex:這是一個perl腳本,在執(zhí)行過程中會調(diào)用xtrabackup命令,這樣用該命令即可以實現(xiàn)備份InnoDB,也可以備份MyISAM引擎的對象。

 使用xtrabackup進行數(shù)據(jù)備份簡析

Xtrabackup是由percona提供的mysql數(shù)據(jù)庫備份工具,特點:

(1)備份過程快速、可靠;

(2)備份過程不會打斷正在執(zhí)行的事務(wù);

(3)能夠基于壓縮等功能節(jié)約磁盤空間和流量;

(4)自動實現(xiàn)備份檢驗;

(5)還原速度快。

官方鏈接地址:http://www.percona.com/software/percona-xtrabackup;可以下載源碼編譯安裝,也可以下載適合的RPM包或使用yum進行安裝或者下載二進制源碼包。

1.安裝xtrabackup

1)下載xtrabackup

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz

2)解壓

tar zxf percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz

3)進入解壓目錄

cd percona-xtrabackup-2.4.4-Linux-x86_64/

4)復(fù)制bin下的所有程序到/usr/bin

[root@localhost percona-xtrabackup-2.4.4-Linux-x86_64]# cp bin/* /usr/bin/

Xtrabackup中主要包含兩個工具:

xtrabackup:是用于熱備份innodb, xtradb表中數(shù)據(jù)的工具,支持在線熱備份,可以在不加鎖的情況下備份Innodb數(shù)據(jù)表,不過此工具不能操作Myisam引擎表; innobackupex:是將xtrabackup進行封裝的perl腳本,能同時處理Innodb和Myisam,但在處理Myisam時需要加一個讀鎖。由于操作Myisam時需要加讀鎖,這會堵塞線上服務(wù)的寫操作,而Innodb沒有這樣的限制,所以數(shù)據(jù)庫中Innodb表類型所占的比例越大,則越有利。

4)安裝相關(guān)插件

yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64 perl-Digest-MD5 –y

5)下載percona-toolkit并安裝

wget https://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm rpm -vih percona-toolkit-2.2.19-1.noarch.rpm

安裝完成xtrabackup后,就可以啟動備份了。

方案一:xtrabackup完全備份+binlog增量備份

備份:

使用xtrabackup進行數(shù)據(jù)備份簡析

創(chuàng)建備份目錄,full是全備份存放的目錄,inc是增量備份存放的目錄。

1)完全備份

使用xtrabackup進行數(shù)據(jù)備份簡析

基本語法:# innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/

/path/to/BACKUP-DIR/:指定備份所存放的目標(biāo)目錄,備份過程會創(chuàng)建一個以當(dāng)時備份時間命名的目錄存放備份文件。

注:

 --defaults-file=/etc/my.cnf 指定mysql的配置文件my.cfg,如果指定則必須是第一個參數(shù)。

--database指定要備份的數(shù)據(jù)庫,這里指定的數(shù)據(jù)庫只對MyISAM表有效,對于InnoDB數(shù)據(jù)來說都是全備(所有數(shù)據(jù)庫中的InnoDB數(shù)據(jù)都進行了備份,不是只備份指定的數(shù)據(jù)庫,恢復(fù)時也一樣)。

出現(xiàn)如下提示,表示成功:

使用xtrabackup進行數(shù)據(jù)備份簡析

備份后的文件:

在備份的同時,備份數(shù)據(jù)會在備份目錄下創(chuàng)建一個以當(dāng)前日期時間為名字的目錄存放備份文件:

使用xtrabackup進行數(shù)據(jù)備份簡析

各文件說明:

(1)xtrabackup_checkpoints:備份類型(如完全或增量)、備份狀態(tài)(如是否已經(jīng)為prepared狀態(tài))和LSN(日志序列號)范圍信息;

每個InnoDB頁(通常為16k大小)都會包含一個日志序列號,即LSN。LSN是整個數(shù)據(jù)庫系統(tǒng)的系統(tǒng)版本號,每個頁面相關(guān)的LSN能夠表明此頁面最近是如何發(fā)生改變的。

(2)xtrabackup_binlog_info:mysql云服務(wù)器當(dāng)前正在使用的二進制日志文件及至備份這一刻為止二進制日志事件的位置。

(3)xtrabackup_binlog_pos_innodb:二進制日志文件及用于InnoDB或XtraDB表的二進制日志文件的當(dāng)前position。

(4)xtrabackup_binary:備份中用到的xtrabackup的可執(zhí)行文件;

(5)backup-my.cnf:備份命令用到的配置選項信息;

注意:備份數(shù)據(jù)庫的用戶需要具有相應(yīng)權(quán)限,如果要使用一個最小權(quán)限的用戶進行備份,則可基于如下命令創(chuàng)建此類用戶:

mysql> create user 'fjc'@'localhost' identified by '123456'; mysql> revoke all privileges,grant option from 'fjc'@'localhost'; mysql> grant reload,lock tables,replication client, process on *.* to 'fjc'@'localhost'; mysql> flush privileges;

至此全備完全成功,然后向mysql某個庫插入幾條數(shù)據(jù),然后進行增量備份。

模擬數(shù)據(jù)庫修改:

使用xtrabackup進行數(shù)據(jù)備份簡析

2)增量備份二進制文件:

使用xtrabackup進行數(shù)據(jù)備份簡析

查看完全備份時binlog日志位置(position)

使用xtrabackup進行數(shù)據(jù)備份簡析

增量備份二進制文件

還原:

使用xtrabackup進行數(shù)據(jù)備份簡析

模擬數(shù)據(jù)庫損壞,這里直接使用刪除數(shù)據(jù)目錄文件來模擬損壞。

(1)準(zhǔn)備(prepare)一個完全備份

一般情況下,在備份完成后,數(shù)據(jù)尚且不能用于恢復(fù)操作,因為備份的數(shù)據(jù)中可能會包含尚未提交的事務(wù)或已經(jīng)提交但尚未同步至數(shù)據(jù)文件中的事務(wù)。因此,此時數(shù)據(jù)文件仍處理不一致狀態(tài)?!皽?zhǔn)備”的主要作用正是通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)。

在準(zhǔn)備(prepare)過程結(jié)束后,InnoDB表數(shù)據(jù)已經(jīng)前滾到整個備份結(jié)束的點,而不是回滾到xtrabackup剛開始時的點。

innobakupex命令的--apply-log選項可用于實現(xiàn)上述功能。如下面的命令:

使用xtrabackup進行數(shù)據(jù)備份簡析

注:

/opt/mysqlbackup/full/2017-03-22_02-10-57/備份文件所在目錄名稱

--use-memory選項來指定其可以使用的內(nèi)存的大小,默認(rèn)通常為100M。如果有足夠的內(nèi)存可用,可以多劃分一些內(nèi)存給prepare的過程,以提高其完成速度。

(2)還原數(shù)據(jù)庫

innobackupex命令的--copy-back選項用于執(zhí)行恢復(fù)操作,其通過復(fù)制所有數(shù)據(jù)相關(guān)的文件至mysql服務(wù)器DATADIR目錄中來執(zhí)行恢復(fù)過程。如下面的命令:

使用xtrabackup進行數(shù)據(jù)備份簡析

使用xtrabackup進行數(shù)據(jù)備份簡析

當(dāng)數(shù)據(jù)恢復(fù)至DATADIR目錄以后,還需要確保所有數(shù)據(jù)文件的屬主和屬組均為正確的用戶,如mysql,否則,在啟動mysqld之前還需要事先修改數(shù)據(jù)文件的屬主和屬組。

重啟動MySQL,并驗證還原后的數(shù)據(jù):

使用xtrabackup進行數(shù)據(jù)備份簡析

(3)還原增量備份:

使用xtrabackup進行數(shù)據(jù)備份簡析

為了防止還原時產(chǎn)生大量的二進制日志,在還原時可臨時關(guān)閉二進制日志后再還原。

使用xtrabackup進行數(shù)據(jù)備份簡析

重新啟動二進制日志并驗證還原數(shù)據(jù),驗證數(shù)據(jù)是否恢復(fù)回來。

方案二:xtrabackup完全備份+xtrabacup增量備份

前面我們進行增量備份時,使用的還是老方法:備份二進制日志。其實xtrabackup還支持進行增量備份。

先介紹下xtrabackup的備份原理:

在InnoDB內(nèi)部會維護一個redo日志文件,我們也可以叫做事務(wù)日志文件(transaction log,事務(wù)日志)。事務(wù)日志會存儲每一個InnoDB表數(shù)據(jù)的記錄修改。當(dāng)InnoDB啟動時,InnoDB會檢查數(shù)據(jù)文件和事務(wù)日志,并執(zhí)行兩個步驟:它應(yīng)用已經(jīng)提交的事務(wù)日志到數(shù)據(jù)文件,并將修改過但沒有提交的數(shù)據(jù)進行回滾操作。

xtrabackup在啟動時會記住log sequence number(LSN),并且復(fù)制所有的數(shù)據(jù)文件。復(fù)制過程需要一些時間,所以這期間如果數(shù)據(jù)文件有改動,那么將會使數(shù)據(jù)庫處于一個不同的時間點。這時,xtrabackup會運行一個后臺進程,用于監(jiān)視事務(wù)日志,并從事務(wù)日志復(fù)制最新的修改。xtrabackup必須持續(xù)的做這個操作,是因為事務(wù)日志是會輪轉(zhuǎn)重復(fù)的寫入,并且事務(wù)日志可以被重用。所以xtrabackup自啟動開始,就不停的將事務(wù)日志中每個數(shù)據(jù)文件的修改都記錄下來,這就是xtrabackup的備份過程。

所以每個InnoDB的頁面都會包含一個LSN信息,每當(dāng)相關(guān)的數(shù)據(jù)發(fā)生改變,相關(guān)的頁面的LSN就會自動增長。這正是InnoDB表可以進行增量備份的基礎(chǔ)。

xtraBackup基于InnoDB的crash-recovery功能。它會復(fù)制innodb的data file,由于不鎖表,復(fù)制出來的數(shù)據(jù)是不一致的,在恢復(fù)的時候使用crash-recovery,使得數(shù)據(jù)恢復(fù)一致。

當(dāng)InnoDB啟動的時候,它會先去檢查data file和transaction log,并且會做二步操作:

1.It applies committed transaction log entries to the data files

2.it performs an undo operation on any transactions that modified data but did not commit.

所以在prepare過程中,XtraBackup使用復(fù)制到的transactions log對備份出來的innodb data file進行crash recovery。

備份:

這里還針對之前測試環(huán)境進行備份和還原。

1)完全備份

使用xtrabackup進行數(shù)據(jù)備份簡析

-defaults-file指定數(shù)據(jù)庫的配置文件,如果使用該參數(shù)必須做為第一個參數(shù);

--user指定連接數(shù)據(jù)庫的用戶名;--password指定連接數(shù)據(jù)庫的密碼;

--port指定連接數(shù)據(jù)庫的端口號;

--backup 實施備份到target-dir;

 --target-dir=name 備份文件的存放目錄路徑

--database指定要備份的數(shù)據(jù)庫,指定的數(shù)據(jù)庫只對MyISAM表和InnoDB表的表結(jié)構(gòu)有效,對于InnoDB數(shù)據(jù)來說都是全備(所有數(shù)據(jù)庫中的InnoDB數(shù)據(jù)都進行了備份,不是只備份指定的數(shù)據(jù)庫,恢復(fù)時也一樣)

/opt/mysqlbackup/full/是備份文件的存放位置。

使用xtrabackup進行數(shù)據(jù)備份簡析

備份完成后部分信息如上。

使用xtrabackup進行數(shù)據(jù)備份簡析

查看完全備份文件

(2)增量備份

第一次增量備份

使用xtrabackup進行數(shù)據(jù)備份簡析

錄入一行數(shù)據(jù)

使用xtrabackup進行數(shù)據(jù)備份簡析

執(zhí)行備份命令

--incremental-basedir指定上次完整備份或者增量備份文件的位置(即如果是第一次增量備份則指向完全備份所在目錄,在執(zhí)行過增量備份之后再一次進行增量備份時,其--incremental-basedir應(yīng)該指向上一次的增量備份所在的目錄)。

使用xtrabackup進行數(shù)據(jù)備份簡析

查看增量備份文件

注:

這里的增量備份其實只針對的是InnoDB,對于MyISAM來說,還是完整備份。

第二次增量備份

使用xtrabackup進行數(shù)據(jù)備份簡析

錄入一行數(shù)據(jù)

使用xtrabackup進行數(shù)據(jù)備份簡析

執(zhí)行備份命令

注:第二次增量備份--incremental-basedir指向上一次增量備份文件的位置

使用xtrabackup進行數(shù)據(jù)備份簡析

查看增量備份文件

恢復(fù)

使用xtrabackup進行數(shù)據(jù)備份簡析

這里直接刪除了tb1表

1)完整備份恢復(fù)

使用xtrabackup進行數(shù)據(jù)備份簡析

注意:在進行恢復(fù)前,如果完整備份在遠(yuǎn)程主機上,首先將完整備份復(fù)制到本地主機上,如果是tar包,則需要先解包,解包命令為:tar–izxf xxx.tar,這里必須使用-i參數(shù)(忽略存檔中的 0 字節(jié)塊(通常意味著文件結(jié)束))。

2)恢復(fù)到第一次增量的時刻

使用xtrabackup進行數(shù)據(jù)備份簡析

    增量備份恢復(fù)的步驟和完整備份恢復(fù)的步驟基本一致,只是應(yīng)用日志的過程稍有不同。增量備份恢復(fù)時,是先將所有的增量備份挨個應(yīng)用到完整備份的數(shù)據(jù)文件中,然后再將完整備份中的數(shù)據(jù)恢復(fù)到數(shù)據(jù)庫中。

3)恢復(fù)到第二次增量備份前面

使用xtrabackup進行數(shù)據(jù)備份簡析

4)恢復(fù)整個庫

使用xtrabackup進行數(shù)據(jù)備份簡析

5)善后工作

使用xtrabackup進行數(shù)據(jù)備份簡析

關(guān)閉數(shù)據(jù)庫

開始rsync數(shù)據(jù)文件

使用xtrabackup進行數(shù)據(jù)備份簡析

當(dāng)數(shù)據(jù)恢復(fù)至DATADIR目錄以后,還需要確保所有數(shù)據(jù)文件的屬主和屬組均為正確的用戶,如mysql,否則,在啟動mysqld之前還需要事先修改數(shù)據(jù)文件的屬主和屬組。

驗證

使用xtrabackup進行數(shù)據(jù)備份簡析

方案三:innobackupex全庫備份+innobackupex增量備份

備份

(1)完全備份

使用xtrabackup進行數(shù)據(jù)備份簡析

執(zhí)行以上命令,之后查看完全備份文件:

使用xtrabackup進行數(shù)據(jù)備份簡析

(2)第一次增量備份

使用xtrabackup進行數(shù)據(jù)備份簡析

錄入一行數(shù)據(jù)

使用xtrabackup進行數(shù)據(jù)備份簡析

執(zhí)行備份命令,之后查看備份文件:

使用xtrabackup進行數(shù)據(jù)備份簡析

(3)第二次增量備份

使用xtrabackup進行數(shù)據(jù)備份簡析

插入一行數(shù)據(jù)

使用xtrabackup進行數(shù)據(jù)備份簡析

執(zhí)行備份命令,之后查看備份文件:

使用xtrabackup進行數(shù)據(jù)備份簡析

恢復(fù)

使用xtrabackup進行數(shù)據(jù)備份簡析

這里同樣刪除了MySQL開源cetus簡析

  • MySQL幾種命令簡析
  • mysql數(shù)據(jù)備份之 xtrabackup
  • 解決xtrabackup恢復(fù)MySQL庫后無法創(chuàng)建用戶方法簡析
  • 解決MySQL 使用xtrabackup備份失敗方法簡析
  • xtrabackup簡析
  • 如何進行Python應(yīng)用程序簡析
  • 如何進行Dalvik,ART與ODEX簡析
  • 另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

    分享名稱:使用xtrabackup進行數(shù)據(jù)備份簡析-創(chuàng)新互聯(lián)
    轉(zhuǎn)載來源:http://bm7419.com/article30/giepo.html

    成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、移動網(wǎng)站建設(shè)、軟件開發(fā)、外貿(mào)網(wǎng)站建設(shè)、ChatGPT、靜態(tài)網(wǎng)站

    廣告

    聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

    網(wǎng)站建設(shè)網(wǎng)站維護公司