新聞中心
對(duì)MySQL數(shù)據(jù)庫(kù)的備份與恢復(fù)是非常有必要的,它可以用很多種方法來(lái)實(shí)現(xiàn),本文我們主要介紹了使用Xtrabackup來(lái)進(jìn)行備份的全部過(guò)程,接下來(lái)就讓我們一起來(lái)了解一下這部分內(nèi)容。

成都創(chuàng)新互聯(lián)公司為客戶(hù)提供專(zhuān)業(yè)的網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開(kāi)發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開(kāi)發(fā)、WEB系統(tǒng)開(kāi)發(fā)、微信二次開(kāi)發(fā)、手機(jī)網(wǎng)站制作設(shè)計(jì)等網(wǎng)站方面業(yè)務(wù)。
Xtrabackup是percona公司的開(kāi)源項(xiàng)目,用以實(shí)現(xiàn)類(lèi)似innodb官方的熱備份工具InnoDB Hot Backup的功能,能夠非常快速地備份與恢復(fù)mysql數(shù)據(jù)庫(kù)。 Xtrabackup中包含兩個(gè)工具:
xtrabackup是用于熱備份innodb, xtradb表中數(shù)據(jù)的工具,不能備份其他類(lèi)型的表,也不能備份數(shù)據(jù)表結(jié)構(gòu);
innobackupex是將xtrabackup進(jìn)行封裝的perl腳本,提供了備份myisam表的能力。
由于innobackupex的功能更為全面和完善,所以,本文以innobackupex作為基礎(chǔ)進(jìn)行研究描述。
下載和安裝
在以下地址可以下載到xtrabackup:http://www.percona.com/downloads/XtraBackup/,可以根據(jù)自己的需要選擇穩(wěn)定版本或者最新版本以及操作系統(tǒng)、源碼包或者rpm包等等。
我下載到的是xtrabackup-1.6.tar,是一個(gè)二進(jìn)制壓縮包,解壓后可直接使用。
將下載到的文件包進(jìn)行解壓tar zxvf xtrabackup-1.6.tar,然后在/usr/bin中建立相關(guān)應(yīng)用的鏈接:
- ln -s /usr/bin/innobackupex /root/xtrabackup-1.6/bin/innobackupex
- ln -s /usr/bin/xtrabackup /root/xtrabackup-1.6/bin/xtrabackup
- ln -s /usr/bin/xtrabackup_51 /root/xtrabackup-1.6/bin/xtrabackup_51
- ln -s /usr/bin/tar4ibd /root/xtrabackup-1.6/bin/tar4ibd
其中,
innobackupex是我們要使用的備份工具;
xtrabackup是被封裝在innobackupex之中的,innobackupex運(yùn)行時(shí)需要調(diào)用它;
xtrabackup_51是xtrabackup運(yùn)行時(shí)需要調(diào)用的工具;
tar4ibd是以tar流的形式產(chǎn)生備份時(shí)用來(lái)打包的工具。
進(jìn)行備份
完整備份:
innobackupex --user=root --password=MySQLPASSWORD --defaults-file=/etc/my.cnf --database=test /mysqlbackup/
其中,--user指定連接數(shù)據(jù)庫(kù)的用戶(hù)名,--password指定連接數(shù)據(jù)庫(kù)的密碼,--defaults-file指定數(shù)據(jù)庫(kù)的配置文件,innobackupex要從其中獲取datadir等信息;--database指定要備份的數(shù)據(jù)庫(kù),這里指定的數(shù)據(jù)庫(kù)只對(duì)MyISAM表和InnoDB表的表結(jié)構(gòu)有效,對(duì)于InnoDB 數(shù)據(jù)來(lái)說(shuō)都是全備(所有數(shù)據(jù)庫(kù)中的InnoDB數(shù)據(jù)都進(jìn)行了備份,不是只備份指定的數(shù)據(jù)庫(kù),恢復(fù)時(shí)也一樣);/mysqlbackup是備份文件的存放位置。
完整備份并打包:
innobackupex --user=root --password=MySQLPASSWORD --defaults-file=/etc/my.cnf --database=test --stream=tar /mysqlbackup > /mysqlbackup/dbbackup20110809.tar
其中,--stream指定流的格式,目前只支持tar。
完整備份并打包壓縮:
innobackupex --user=root --password=MySQLPASSWORD --defaults-file=/etc/my.cnf --database=test --stream=tar /mysqlbackup/ | gzip /mysqlbackup/dbbackup20110809.tar.gz
完整備份到遠(yuǎn)程主機(jī):
innobackupex --user=root --password= MySQLPASSWORD --defaults-file=/etc/my.cnf --database=test --stream=tar /mysqlbackup | ssh root@remote-host cat ">" /mysqlbackup/dbbackup20110809.tar
增量備份:
innobackupex --user=root --password=MySQLPASSWORD --database=test --incremental --incremental-basedir=/mysqlbackup/2011-08-09_14-50-20/ /mysqlbackup/trn/
其中,--incremental指明是增量備份,--incremental-basedir指定上次完整備份或者增量備份文件的位置。這里的增量備份其實(shí)只針對(duì)的是InnoDB,對(duì)于MyISAM來(lái)說(shuō),還是完整備份。
進(jìn)行恢復(fù)
完整備份恢復(fù):
在進(jìn)行恢復(fù)前,如果完整備份在遠(yuǎn)程主機(jī)上,首先將完整備份復(fù)制到本地主機(jī)上,如果是tar包,則需要先解包,解包命令為:tar –izxvf dbbackup20110809.tar,這里必須使用-i參數(shù)。然后停止mysql數(shù)據(jù)庫(kù)并刪除欲恢復(fù)的數(shù)據(jù)庫(kù)文件夾,如:
service mysql stop
rm /var/lib/mysql/test –rf
然后將備份文件中的日志應(yīng)用到備份文件中的數(shù)據(jù)文件上。
innobackupex --user=root --password=MySQLPASSWORD --apply-log /mysqlbackup/full/2011-08-09_14-50-20/
這里的--apply-log指明是將日志應(yīng)用到數(shù)據(jù)文件上,完成之后將備份文件中的數(shù)據(jù)恢復(fù)到數(shù)據(jù)庫(kù)中:
innobackupex --user=root --password=MySQLPASSWORD --copy-back /mysqlbackup/full/2011-08-09_14-50-20/
這里的—copy-back指明是進(jìn)行數(shù)據(jù)恢復(fù)。數(shù)據(jù)恢復(fù)完成之后,需要修改相關(guān)文件的權(quán)限mysql數(shù)據(jù)庫(kù)才能正常啟動(dòng)。
- chown mysql:mysql /var/lib/mysql/ib*
- chown mysql:mysql /var/lib/mysql/test
- service mysql start
注意:這里我雖然指定的是test數(shù)據(jù)庫(kù),但實(shí)際上如果其他數(shù)據(jù)庫(kù)中也有InnoDB表,那么這些InnoDB表中的數(shù)據(jù)也會(huì)被恢復(fù)了。
增量備份恢復(fù):
增量備份恢復(fù)的步驟和完整備份恢復(fù)的步驟基本一致,只是應(yīng)用日志的過(guò)程稍有不同。增量備份恢復(fù)時(shí),是先將所有的增量備份挨個(gè)應(yīng)用到完整備份的數(shù)據(jù)文件中,然后再將完整備份中的數(shù)據(jù)恢復(fù)到數(shù)據(jù)庫(kù)中。命令如下:
應(yīng)用第一個(gè)增量備份
innobackupex --user=root --password=MySQLPASSWORD --defaults-file=/etc/my.cnf --apply-log /mysqlbackup/full/2011-08-09_14-50-20/ --incremental-dir=/mysqlbackup/trn/2011-08-09_15-12-43/
應(yīng)用第二個(gè)增量備份
innobackupex --user=root --password=MySQLPASSWORD --defaults-file=/etc/my.cnf --apply-log /mysqlbackup/full/2011-08-09_14-50-20/ --incremental-dir=/mysqlbackup/trn/2011-08-05_15-15-47/
將完整備份中的數(shù)據(jù)恢復(fù)到數(shù)據(jù)庫(kù)中。
innobackupex --user=root --password=MySQLPASSWORD --defaults-file=/etc/my.cnf --copy-back /mysqlbackup/full/2011-08-05_14-50-20/
其中,--incremental-dir指定要恢復(fù)的增量備份的位置。
以上就是使用xtrabackup對(duì)MySQL進(jìn)行備份和恢復(fù)的全部過(guò)程,本文就介紹到這里了,如果您想了解更多關(guān)于MySQL數(shù)據(jù)庫(kù)的知識(shí),可以看一下這里的文章:http://database./mysql/,相信一定可以給您帶來(lái)幫助的!
【編輯推薦】
- MySQL數(shù)據(jù)庫(kù)中varchar的限制規(guī)則
- MySQL數(shù)據(jù)庫(kù)負(fù)荷較高時(shí)的原因排查思路
- MySQL簡(jiǎn)單操作之a(chǎn)lter table改變表的結(jié)構(gòu)
- MySQL簡(jiǎn)單操作之用select查詢(xún)表中的記錄
- 六條比較有用的MySQL數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句
網(wǎng)站名稱(chēng):詳解xtrabackup對(duì)MySQL進(jìn)行備份和恢復(fù)的全過(guò)程
轉(zhuǎn)載注明:http://fisionsoft.com.cn/article/cdchggo.html


咨詢(xún)
建站咨詢(xún)
