Percona Xtrabackup備份mysql (完整備份與增量備份)

來源:互聯網
上載者:User

標籤:伺服器   mysql   資料庫   軟體   而且   

Percona Xtrabackup備份mysql (完整備份與增量備份)


Xtrabackup簡介


Percona XtraBackup是開源免費的MySQL資料庫熱備份軟體,它能對InnoDB和XtraDB儲存引擎的資料庫非阻塞地備份(對於MyISAM


的備份同樣需要加表鎖)。XtraBackup支援所有的Percona Server、MySQL、MariaDB和Drizzle。


XtraBackup優勢 :


1、無需停止資料庫進行InnoDB熱備


2、增量備份MySQL


3、流壓縮到傳輸到其它伺服器


4、能比較容易地建立主從同步


5、備份MySQL時不會增大伺服器負載


Xtrabackup的特性是針對大資料進行備份恢複使用,資料庫大小一般在G以上或10G以上,對於資料量小的Mysql庫完全可以使用


mysqldump來解決,備份和恢複速度快而且操作簡便快捷,這裡對mysqldump命令就不做介紹了。


Xtrabackup安裝


這裡只介紹Ubuntu-12.04下的安裝方法,其它系統的安裝方法請參考 http://www.percona.com/doc/percona-


xtrabackup/2.1/installation.html


apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

在/etc/apt/sources.list加入:



deb http://repo.percona.com/apt precise main

deb-src http://repo.percona.com/apt precise main

執行update及安裝操作


apt-get update

apt-get install percona-xtrabackup

註:precise是Ubuntu-12.04的版本代號,如果是其它系統版本,需要更換。


Xtrabackup工具介紹


安裝XtraBackup後,其實會有幾個工具:


innobackupex:這個是其實是下面三個工具的一個perl指令碼封裝,可以備份MyISAM, InnoDB, XtraDB表。但在處理Myisam時需要


加一個讀鎖。


xtrabackup:一個由C編譯而來的二進位檔案,只能備份InnoDB和XtraDB資料。


xbcrypt:用來加密或解密備份的資料。


xbstream:用來解壓或壓縮xbstream格式的壓縮檔。


建議使用perl封裝的innobackupex來作Database Backup,因為比較容易使用。所以下面只介紹innobackupex的使用。其它的使用參考: 


http://www.percona.com/doc/percona-xtrabackup/2.1/manual.html


innobackupex使用方法


完整的選項使用請執行innobackupex –help,這裡只介紹使用常用的選項進行完整備份及增量備份和還原。


innobackupex Options 這裡只對常用參數進行描述


–defaults-file 資料庫的設定檔路徑,感覺本地備份不寫也可以,遠程沒測試過。


–apply-log 準備在一個備份上啟動mysql服務。


–copy-back 從備份目錄拷貝資料,索引,日誌到my.cnf檔案裡規定的初始位置。


–no-timestamp 建立備份時不自動產生時間目錄,可以自訂備份目錄名例如: /backups/mysql/base


–databases 用於指定要備份的資料庫, 多個庫檔案使用方法: “database1 database2″


–incremental 在全備份的基礎上進行增量備份,後跟增量備份存貯目錄路徑


–incremental-basedir=DIRECTORY 增量備份所需要的全備份路徑目錄或上次做增量備份的目錄路徑


–incremental-dir=DIRECTORY 增量備份存貯的目錄路徑


–redo-only 用於準備增量備份內容把資料合併到全備份目錄,配合–incremental-dir 增量備份目錄使用。


–force-non-empty-directories 如果是特定庫備份還原,不需要刪掉整個mysql目錄,只是特定庫的及相關檔案就可以,還原時


加上此參數就不會報錯。


其他具體參數可以參考:http://www.percona.com/doc/percona-


xtrabackup/2.1/innobackupex/innobackupex_option_reference.html


完整備份及還原


一、全部資料庫


備份:


innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/full_backup

還原:


service mysql stop

 

rm -rf /var/lib/mysql

 

mkdir /var/lib/mysql

 

innobackupex --apply-log /data/mysql_backup/full_backup --use-memory=1G --user=root --password=root

 

innobackupex --copy-back /data/mysql_backup/full_backup

 

chown mysql:mysql -R /var/lib/mysql

 

service mysql start

查看恢複的資料庫


二、指定資料庫


備份:


假如我們要備份centos和aabb資料庫。


innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf --databases="centos aabb" 


/data/mysql_backup/

這樣就會在/data/mysql_backup產生一個帶時間的目錄,如果不需要帶時間,可以使用選項–no-timestamp。


如果想備份成壓縮檔,可以使用如下語句:


innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf --databases="centos aabb" --no-


timestamp --stream=tar ./ | gzip - > centos-aabb.bz.tar.gz

還原:


假如完整備份的路徑為/data/mysql_backup/full_backup,如果完整備份是壓縮檔,需要先解壓再還原。

service mysql stop

 

rm -rf /var/lib/mysql/ibdata*

 

rm -rf /var/lib/mysql/ib_logfile*

 

rm -rf /var/lib/mysql/centos

 

rm -rf /var/lib/mysql/aabb

 

innobackupex --apply-log /data/mysql_backup/centos_aabb_full_backup

 

innobackupex --copy-back --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/centos_aabb_full_backup

 

chown -R mysql:mysql /var/lib/mysql

 

service mysql start

增量備份及還原


在這裡全庫的增量備份方法就不多講了,只是針對特定資料庫進行講解,其實是同理的就是把下面參數中的–databases 選項去


掉就可以,感興趣的可以自己試下。


增量備份是建立在完整備份的基礎上的,所以首先確保已經完整備份了一次。


完整備份:


innobackupex --user=root --password=root --databases="centos" --no-timestamp 


/data/mysql_backup/centos_full_backup

現在完整備份的目錄為/data/mysql_backup/centos_full_backup。


增量備份:


第一次增量備份:


innobackupex --incremental /data/mysql_backup/inc1 --no-timestamp --incremental-


basedir=/data/mysql_backup/centos_full_backup --user=root --password=root --defaults-file=/etc/mysql/my.cnf

第二次增量備份:需要把–incremental-basedir指定到上次做增量備份的目錄,這裡應該知道/data/mysql_backup/inc1


innobackupex --incremental /data/mysql_backup/inc2 --no-timestamp --incremental-basedir=/data/mysql_backup/inc1 


--user=root --password=root --defaults-file=/etc/mysql/my.cnf

選項–incremental是指定作增量備份 –incremental-basedir選項是指定上一次增量備份的目錄(如果是第一次作增量備份,則


為完整備份的目錄)。


還原:


增量備份的還原作業跟完整的還原有點不一樣,首先必須使用–apply-log –redo-only對完整備份的目錄及所有增量備份目錄進


行操作,然後就可以像還原完整備份時的操作了。


對每個備份目錄作apply-log redo-only操作(包括完整備份)


innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup --user=root --password=root

 

innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup --incremental-


dir=/data/mysql_backup/inc1 --user=root --password=root

 

innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup --incremental-


dir=/data/mysql_backup/inc2 --user=root --password=root

看到有文章在恢複增量備份的時候提到在做最後一個讀取增量記錄的時候不使用–redo-only 參數, 經過測試,使用了此參數後


恢複的資料庫也都運行正確,我使用的是2.17版本xtrabackup, 至於以前版本就沒測試過。有知道的可以在這裡分享下。


下面就跟還原完整備份時一樣了:



service mysql stop

 

rm -rf /var/lib/mysql/ibdata*

 

rm -rf /var/lib/mysql/ib_logfile*

 

rm -rf /var/lib/mysql/centos

 

innobackupex --apply-log /data/mysql_backup/centos_full_backup --use-memory=1G --user=root --password=root

 

##--use-memory 能夠定義讀取備份時的記憶體大小,以便快速的完成還原準備工作。

 

innobackupex --copy-back --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/centos_full_backup

 

chown mysql:mysql -R /var/lib/mysql

 

service mysql start

現在全部增量恢複就完成了,可以登入資料庫查看下恢複的資料了


Percona Xtrabackup備份mysql (完整備份與增量備份)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.