程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 應用Xtrabackup對象備份及恢復(MySQL DBA的必備對象)

應用Xtrabackup對象備份及恢復(MySQL DBA的必備對象)

編輯:MySQL綜合教程

應用Xtrabackup對象備份及恢復(MySQL DBA的必備對象)。本站提示廣大學習愛好者:(應用Xtrabackup對象備份及恢復(MySQL DBA的必備對象))文章只能為提供參考,不一定能成為您想要的結果。以下是應用Xtrabackup對象備份及恢復(MySQL DBA的必備對象)正文


Xtrabackup------MySQL DBA的必備對象

留意:

1)文檔參照http://www.percona.com/docs/wiki/percona-xtrabackup:start

2)mysql要應用5.1.50版本或以上。

1、Xtrabackup簡介及裝置

1、Xtrabackup  是percona的一個開源項目,可以熱備份innodb ,XtraDB,和MyISAM(會鎖表),可以看作是InnoDB Hotbackup的收費替換品。

                                                        Percona Support for MySQL

Benefit Silver
(Per Server) Gold
(Unlimited) Platinum
(Unlimited) Annual Price $1,500/server From $15,000 From $30,000 Number of Servers Covered Per-Server Unlimited Unlimited Number of Support Incidents Unlimited Unlimited Unlimited Response Time SLA 60 Minutes 30 Minutes 30 Minutes Named Support Contact Persons 5 10 20 Email, Web, & Chat Support Yes Yes Yes Phone Support Yes Yes Yes Login Support Yes Yes Yes 24×7 Support Yes Yes Yes Fixes For Verified Bugs   Yes Yes Hot Bug Fixes     Yes Onsite System Audit   Option Yes Covers Old Server Versions     Yes Covers Non-Standard Platforms     Option Covers Custom Code     Option
 

參考:http://www.percona.com/mysql-support/

 

先看看若何裝置Xtrabackup,最簡略的裝置方法是應用RPM包,不外想應用源代碼方法裝置的話,其裝置方法有點怪僻,由於它采取的在MySQL源代碼上打補釘構建的方法裝置的。

2、裝置:

wget http://www.percona.com/downloads/XtraBackup/XtraBackup-1.4/Linux/binary/i686/

tar zxf xtrabackup-1.4.tar.gz

cd xtrabackup-1.4

./configure

make

停止到這裡時,萬萬別make install,那樣就會接著裝置MySQL了,准確辦法是:

cd innobase/xtrabackup/

make

make install

裝置參照:http://www.percona.com/docs/wiki/percona-xtrabackup:installation:from-source

3、如斯一來,就會在/usr/bin目次裡裝置上兩個有效的對象:xtrabackup、innobackupex

1)xtrabackup 只能備份InnoDB和XtraDB兩種數據表,支撐在線熱備份,可以在不加鎖的情形下備份Innodb數據表,不外此對象不克不及操作Myisam引擎表

2)innobackupex  是一個劇本封裝,封裝了xtrabackup,能同時處置Innodb和Myisam,但在處置Myisam時須要加一個讀鎖。

 

按如上的引見,因為操作Myisam時須要加讀鎖,這會梗塞線上辦事的寫操作,而Innodb沒有如許的限制,所以數據庫中Innodb表類型所占的比例越年夜,則越有益。現實運用中普通是直接應用innobackupex辦法,它重要有三種操作方法,按手冊中的引見:

Usage:

innobackup [--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME]

           [--password=WORD] [--port=PORT] [--socket=SOCKET] [--no-timestamp]

           [--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar]

           [--defaults-file=MY.CNF]

           [--databases=LIST] [--remote-host=HOSTNAME] BACKUP-ROOT-DIR

innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF]

           [--ibbackup=IBBACKUP-BINARY] BACKUP-DIR

innobackup --copy-back [--defaults-file=MY.CNF] BACKUP-DIR

——————————————————————————————————

第一個敕令行是熱備份mysql數據庫。

帶有--apply-log選項的敕令是預備在一個備份上啟動mysql辦事。

帶有--copy-back選項的敕令從備份目次拷貝數據,索引,日記到my.cnf文件裡劃定的初始地位。

Xtrabackup還可以用來moving InnoDB tables between servers,更多的內容可以參考官方文檔及例子。

參考鏈接:

1.官方文檔:http://www.percona.com/docs/wiki/percona-xtrabackup:xtrabackup_manual

2.Xtrabackup online backup for InnoDB/XTraDB(pdf):

http://www.percona.com/ppc2009/PPC2009_xtrabackup.pdf

    2、innobackupex 和 xtrabackup備份詳解

注:innobackupex會依據/et/my.cnf來肯定MySQL的數據地位。

1.通俗備份:

innobackupex [--defaults-file=/etc/my.cnf] --user=root [--host=192.168.1.52] [--password=xxx] [--port=3306]   /data/back_data/    2>/data/back_data/1.log

備份的目次是/data/back_data/,這裡的2>/data/back_data/1.log,是將備份進程中的輸入信息重定向到1.log

innobackupex-1.5.1 –slave-info …..

–slave-info會記載復制主日記的 復制點,便於從新做復制用。(用在備份從機械用)

備份後的文件:

xtrabackup_binlog_info — 寄存binlog的信息。(binlog須要別的拷貝備份,假如須要binlog的話)

xtrabackup_checkpoints — 寄存備份的肇端地位和停止地位。

恢復:

起首停失落數據庫,然後刪除數據庫目次下的一切數據庫文件.

cd /data/mysql_data

rm -rf * # 刪除數據目次裡的一切文件

innobackupex-1.5.1 --user=root --apply-log /data/back_data/2010-10-26_16-09-37 # 運用日記

innobackupex-1.5.1 --user=root --copy-back /data/back_data/2010-10-26_16-09-37

默許innobackupex-1.5.1會將二進制日記信息寄存在文件xtrabackup_binlog_info中發(便利做Slave)。

cd /data

chown -R mysql:mysql mysql_data/

重啟mysql辦事

2.打包(Tar)備份:

innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar /data/back_data/2/ 2>/data/back_data/2.log   1>/data/back_data/2.tar

復原:

#cd /data/back_data/2/

#tar ixvf 2.tar

# ls

2.tar backup-my.cnf ibdata1 ibdata2 mablevi mysql xtrabackup_binlog_info xtrabackup_checkpoints  xtrabackup_logfile

預備復原

# innobackupex-1.5.1 --user=xxx [--password=xxx]--apply-log /data/back_data/

……

innobackupex: completed OK!

刪除數據目次裡的一切文件

rm -rf /data/mysql_data/*

拷貝:

# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back  /data/back_data/

……

innobackupex: completed OK!

cd /data

chown -R mysql:mysql mysql_data/

重啟mysql辦事

3. 緊縮(tar gzip)備份

innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar

/data/back_data/2/  2>/data/back_data/2.log | gzip > /data/back_data/2.tar.gz

這裡應用了管道|將innobackupex-1.5.1作為gzip的尺度輸出。恢復,只須要應用tar -izxvf 解壓對應的文件後,操作完整同通俗備份。

復原:

應用tar –izxvf 解壓對應的文件後,操作完整同通俗備份。

#cd /data/back_data/2/

#tar ixvf 2.tar

# ls

backup-my.cnf ibdata1 ibdata2 mablevi mysql xtrabackup_binlog_info xtrabackup_checkpoints  xtrabackup_logfile

預備復原:

# innobackupex-1.5.1 --user=xxx [--password=xxx] --apply-log /data/back_data/2/

……

innobackupex: completed OK!

刪除數據目次裡的一切文件

rm -rf /data/mysql_data/*

# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back   /data/back_data/2/

cd /data

chown -R mysql:mysql mysql_data/

重啟mysql辦事

———————————————————————————————————————

xtrabackup 備份和恢復

備份:

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/

恢復:

須要履行兩次xtrabackup –prepare

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/

留意,xtrabackup只備份數據文件,其實不備份數據表構造(.frm),所以應用xtrabackup恢復的時刻,你必需有對應表構造文件(.frm)。

增量備份:

1. 全量備份

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/

2. 增量備份

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/ --incremental-

basedir=/data/back_data/

在增量備份的目次下,數據文件都是以.delta開頭的。增量備份只備份上一次全量備份後被修正過的page,所以增量備份只暫用較少的空間。增量備份可以在增量備份的基本上增量。

增量備份恢復:

我們須要分離對全量、增量備份各做一次prepare操作。

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/2010-10-26_16-09-37

xtrabackup --prepare --target-dir=/data/back_data/2010-10-26_16-09-37--incremental-

dir=/data/back_data_inc

xtrabackup --prepare --target-dir=/data/back_data/ #這一步不是必需的

如許,/data/back_data/下的數據文件便可以直接放到你的MySQL數據目次下,恢單數據了。

再次提示,xtrabackup只備份InnoDB數據文件,表構造是不備份的,所以恢復的時刻,你必需有對應表構造文件(.frm)。

rm -rf /data/mysql_data/ib*

cp -i /data/back_data/2010-10-26_16-09-37/ib* /data/mysql_data/

cd /data

chown -R mysql:mysql mysql_data/

2.innobackupex 與 xtrabackup 相聯合

起首,innobackupex全備份:

innobackupex  --user=root /data/back_data/ 2>/data/back_data/1.log #會生成一個時光文件夾,這裡假設是2010-10-29_15-57-44

然後,xtrabackup 做增量備份:

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/4 --incremental-basedir=/data/back_data/2010-10-29_15-57-44

恢復:

起首停失落數據庫,備份二進制日記(假如有的話),然後刪除數據庫目次下的一切數據庫文件.

cd /data/mysql_data

rm -rf * # 刪除數據目次裡的一切文件

恢復全量備份:

innobackupex  --user=root --apply-log /data/back_data/2010-10-29_15-57-44 # 運用日記

innobackupex  --user=root --copy-back /data/back_data/2010-10-29_15-57-44 # 拷貝文件

恢復增量備份:

xtrabackup --prepare --target-dir=/data/back_data/2010-10-29_15-57-44 --incremental-dir=/data/back_data_inc/5

cd /data

chown -R mysql:mysql mysql_data/

重啟mysql辦事。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved