中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用xtrabackup進行數據備份簡析

發布時間:2020-04-26 11:32:58 來源:三月 閱讀:206 作者:三月 欄目:數據庫

下文內容主要給大家帶來使用xtrabackup進行數據備份簡析,這里所講到的知識,與書籍略有不同,都是億速云專業技術人員在與用戶接觸過程中,總結出來的,具有一定的經驗分享價值,希望給廣大讀者帶來幫助。

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

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

Xtrabackup實現是物理備份,而且是物理熱備

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

xtrabackup:專用于備份InnoDBXtraDB引擎的數據;

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

 使用xtrabackup進行數據備份簡析

Xtrabackup是由percona提供的mysql數據庫備份工具,特點:

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

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

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

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

(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)復制bin下的所有程序到/usr/bin

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

Xtrabackup中主要包含兩個工具:

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

4安裝相關插件

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進行數據備份簡析

創建備份目錄full是全備份存放的目錄,inc是增量備份存放的目錄。


1)完全備份

使用xtrabackup進行數據備份簡析

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

/path/to/BACKUP-DIR/指定備份所存放的目標目錄,備份過程會創建一個以當時備份時間命名的目錄存放備份文件。

注:

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

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

 

出現如下提示表示成功

使用xtrabackup進行數據備份簡析


備份后的文件:

在備份的同時,備份數據會在備份目錄下創建一個以當前日期時間為名字的目錄存放備份文件:

使用xtrabackup進行數據備份簡析

各文件說明:

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

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

2xtrabackup_binlog_infomysql云服務器當前正在使用的二進制日志文件及至備份這一刻為止二進制日志事件的位置。

3xtrabackup_binlog_pos_innodb二進制日志文件及用于InnoDBXtraDB表的二進制日志文件的當前position

4xtrabackup_binary備份中用到的xtrabackup的可執行文件;

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

 

注意:備份數據庫的用戶需要具有相應權限,如果要使用一個最小權限的用戶進行備份,則可基于如下命令創建此類用戶:

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某個庫插入幾條數據,然后進行增量備份

模擬數據庫修改:

使用xtrabackup進行數據備份簡析


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

使用xtrabackup進行數據備份簡析

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


使用xtrabackup進行數據備份簡析

增量備份二進制文件


還原:

使用xtrabackup進行數據備份簡析

模擬數據庫損壞這里直接使用刪除數據目錄文件來模擬損壞。

(1)準備(prepare)一個完全備份

一般情況下,在備份完成后,數據尚且不能用于恢復操作,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。因此,此時數據文件仍處理不一致狀態。“準備”的主要作用正是通過回滾未提交的事務及同步已經提交的事務至數據文件也使得數據文件處于一致性狀態。

在準備(prepare)過程結束后,InnoDB表數據已經前滾到整個備份結束的點,而不回滾到xtrabackup剛開始時的點。

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

使用xtrabackup進行數據備份簡析

注:

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

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

 

(2)還原數據庫

innobackupex命令的--copy-back選項用于執行恢復操作,其通過復制所有數據相關的文件至mysql服務器DATADIR目錄中來執行恢復過程。如下面的命令:

使用xtrabackup進行數據備份簡析


使用xtrabackup進行數據備份簡析

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

 

重啟動MySQL,并驗證還原后的數據:

使用xtrabackup進行數據備份簡析


3)還原增量備份:

使用xtrabackup進行數據備份簡析

為了防止還原時產生大量的二進制日志,在還原時可臨時關閉二進制日志后再還原


使用xtrabackup進行數據備份簡析

重新啟動二進制日志并驗證還原數據驗證數據是否恢復回來


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

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

先介紹下xtrabackup的備份原理:

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

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

所以每個InnoDB的頁面都會包含一個LSN信息,每當相關的數據發生改變,相關的頁面的LSN就會自動增長。這正是InnoDB表可以進行增量備份的基礎。

xtraBackup基于InnoDBcrash-recovery功能。它會復制innodbdata file,由于不鎖表,復制出來的數據是不一致的,在恢復的時候使用crash-recovery,使得數據恢復一致。

InnoDB啟動的時候,它會先去檢查data filetransaction 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使用復制到的transactions log對備份出來的innodb data file進行crash recovery

 

備份:

這里還針對之前測試環境進行備份和還原。

1)完全備份

使用xtrabackup進行數據備份簡析

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

--user指定連接數據庫的用戶名;--password指定連接數據庫的密碼;

--port指定連接數據庫的端口號;

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

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

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

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


使用xtrabackup進行數據備份簡析

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


使用xtrabackup進行數據備份簡析

查看完全備份文件

 

(2)增量備份

第一次增量備份

使用xtrabackup進行數據備份簡析

錄入一行數據


使用xtrabackup進行數據備份簡析

執行備份命令

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


使用xtrabackup進行數據備份簡析

查看增量備份文件

注:

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


第二次增量備份

使用xtrabackup進行數據備份簡析

錄入一行數據


使用xtrabackup進行數據備份簡析

執行備份命令

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


使用xtrabackup進行數據備份簡析

查看增量備份文件

 

恢復

使用xtrabackup進行數據備份簡析

這里直接刪除了tb1

1)完整備份恢復

使用xtrabackup進行數據備份簡析

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


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

使用xtrabackup進行數據備份簡析

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


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

使用xtrabackup進行數據備份簡析


4)恢復整個庫

使用xtrabackup進行數據備份簡析


5)善后工作

使用xtrabackup進行數據備份簡析

關閉數據庫

開始rsync數據文件


使用xtrabackup進行數據備份簡析

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


驗證

使用xtrabackup進行數據備份簡析


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

備份

1)完全備份

使用xtrabackup進行數據備份簡析

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

使用xtrabackup進行數據備份簡析


2)第一次增量備份

使用xtrabackup進行數據備份簡析

錄入一行數據


使用xtrabackup進行數據備份簡析

執行備份命令,之后查看備份文件:

使用xtrabackup進行數據備份簡析


3)第二次增量備份

使用xtrabackup進行數據備份簡析

插入一行數據


使用xtrabackup進行數據備份簡析

執行備份命令,之后查看備份文件:

使用xtrabackup進行數據備份簡析


恢復

使用xtrabackup進行數據備份簡析

這里同樣刪除了tb1

1)恢復全備份

使用xtrabackup進行數據備份簡析

--redo-only 用于準備增量備份內容把數據合并到全備份目錄,配合incremental-dir 增量備份目錄使用


2)基于全備份進行第一次增量備份的恢復

使用xtrabackup進行數據備份簡析


3)基于全備份和第一次增量備份,恢復第二次增量備份

使用xtrabackup進行數據備份簡析


4)善后工作

使用xtrabackup進行數據備份簡析

停止數據庫

空數據目錄下所有文件


使用xtrabackup進行數據備份簡析

將恢復好的數據按照配置文件的需求拷貝到相應目錄


使用xtrabackup進行數據備份簡析

修改數據文件的屬性

啟動mysql服務,并驗證,發現數據都回來了。

 

附:Xtrabackup的“流”及“備份壓縮”功能

Xtrabackup對備份的數據文件支持“流”功能,即可以將備份的數據通過STDOUT傳輸給tar程序進行歸檔,而不是默認的直接保存至某備份目錄中。要使用此功能,僅需要使用--stream選項即可。如:

innobackupex --user=root --password="123456" --stream=tar /opt/mysqlbackup/full/ | gzip > /opt/mysqlbackup/full/full_`date +%F_%H%M%S`.tar.gz

對于以上關于使用xtrabackup進行數據備份簡析,如果大家還有更多需要了解的可以持續關注我們億速云的行業推新,如需獲取專業解答,可在官網聯系售前售后的,希望該文章可給大家帶來一定的知識更新。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

威海市| 沐川县| 贡嘎县| 清苑县| 连云港市| 南郑县| 蒲城县| 黄龙县| 恩施市| 孝义市| 延安市| 晋江市| 富蕴县| 社旗县| 兰州市| 章丘市| 花垣县| 泽库县| 临夏县| 邯郸县| 柳林县| 高阳县| 莎车县| 仲巴县| 拉萨市| 铜梁县| 江北区| 龙州县| 宁德市| 乌鲁木齐县| 长子县| 略阳县| 宁阳县| 崇文区| 会同县| 阳曲县| 阳春市| 井冈山市| 花莲县| 新昌县| 改则县|