溫馨提示×

溫馨提示×

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

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

怎么理解Xtrabackup

發(fā)布時(shí)間:2021-11-16 16:37:59 來源:億速云 閱讀:119 作者:柒染 欄目:MySQL數(shù)據(jù)庫

怎么理解Xtrabackup,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

就Xtrabackup談一下自己的經(jīng)歷
Xtrabackup包括innobackupex-1.5.1和xtrabackup兩個部分,我用的是新版本0.9源碼包。innobackupex-1.5.1是一個perl腳本,在xtrabackup上做了一層外包,添加了對MyISAM存儲引擎和其他選項(xiàng)的支持。


innobackupex
備份【這里指完整備份】
innobackupex-1.5.1 --user=root --password=123456 /backup/mysql 2&> /backup/mysql/backup_out.log

innobackupex-1.5.1會在備份目錄下生成一個日期時(shí)間HASH哈希目錄,如:/backup/mysql/2009-10-28_10-40-11。同時(shí)也可以將運(yùn)行過程寫入日志方便以后查看

下面我們來看一下innobackupex-1.5.1都幫助我們備份了哪些重要文件

ls -l /backup/mysql/2009-10-28_10-40-11
backup-my.cnf ————備份MySQL配置文件my.cnf
ibdata1 ————備份InnoDB數(shù)據(jù)空間文件
mysql ————備份mysql系統(tǒng)庫
mysql-stderr ————innobackupex-1.5.1運(yùn)行錯誤信息
mysql-stdout ————innobackupex-1.5.1運(yùn)行跟蹤記錄
mytestdb ————備份用戶自定義數(shù)據(jù)庫
test ————備份test庫
xtrabackup_binlog_info ————記錄備份時(shí)binlog信息和時(shí)間點(diǎn)
xtrabackup_checkpoints ————記錄備份類型和時(shí)間點(diǎn)
xtrabackup_logfile ————二進(jìn)制日志

附:mytestdb庫包含MyISAM和InnoDB存儲引擎的表

ls -l /backup/mysql/2009-10-28_10-40-11/mytestdb
record.frm
record.ibd
shop.frm
shop.MYD
shop.MYI


這里我們查看下mytestdb,MyISAM和InnoDB存儲引擎的表的定義文件、數(shù)據(jù)文件和索引文件都被備份下來了^_^


恢復(fù)
———準(zhǔn)備日志文件
innobackupex-1.5.1 --apply-log /backup/mysql/2009-10-28_10-40-11

ls /backup/mysql/2009-10-28_10-40-11 我們看到除了以上文件外又多了InnoDB日志文件
ib_logfile0 ib_logfile1

———拷貝備份文件——實(shí)際的恢復(fù)【好像MyISAM的文件拷貝】
innobackupex-1.5.1 --copy-back /backup/mysql/2009-10-28_10-40-11

ls -l /data/dbfile/
查看服務(wù)器數(shù)據(jù)文件目錄,我們看到備份的所有文件已經(jīng)都copy過來了

chown -R mysql.mysql /data/dbfile
修改數(shù)據(jù)目錄權(quán)限

重啟mysqld使生效


xtrabackup


備份
(full backup)
# ./xtrabackup --backup --target-dir=/backup/mysql

(single db backup)
# ./xtrabackup --backup --tables=mytestdb.* --target-dir=/backup/mysql

(incremental backup)
# ./xtrabackup --backup --target-dir=/backup/mysql --incremental-basedir=/backup/mysql/inc

(prepare)
# ./xtrabackup --prepare --target-dir=/backup/mysql注:從詞面解釋prepare是準(zhǔn)備的意思——也就是說它不是直接恢復(fù)。同innobackupex-1.5.1一樣需要先生成InnoDB日志文件ib_logfile*,所以這里執(zhí)行2次完成恢復(fù)前的準(zhǔn)備工作
恢復(fù)的時(shí)候直接拷貝文件到數(shù)據(jù)目錄即可
假使你誤刪除了數(shù)據(jù)庫目錄或InnoDB相關(guān)文件,這樣做可以幫助你恢復(fù)到當(dāng)時(shí)的完整數(shù)據(jù);假使你只想定時(shí)恢復(fù),這樣做會覆蓋當(dāng)前數(shù)據(jù)目錄下的文件


區(qū)別:
innobackupex-1.5.1備份了所有數(shù)據(jù)庫文件【包括表定義文件、數(shù)據(jù)文件、索引文件】
xtrabackup只備份InnoDB表的數(shù)據(jù)文件——tablename.ibd文件,所以我們需要單獨(dú)備份表定義文件或dump的數(shù)據(jù)庫結(jié)構(gòu),否則出現(xiàn)誤刪除數(shù)據(jù)目錄的情況可就...uh...新dump的結(jié)構(gòu)和數(shù)據(jù)不一定對的上哦~


(apply incremental backup)
# ./xtrabackup --prepare --target-dir=/backup/mysql --incremental-dir=/backup/mysql/inc

chown -R mysql.mysql /data/dbfile
修改數(shù)據(jù)目錄權(quán)限

重啟mysqld使生效


增量備份待研究,To be continued ... [@more@]


innobackupex-1.5.1備份擴(kuò)展

打包備份 【打包必須指定流 --stream=tar
tar包
innobackupex-1.5.1 --user=root --password=123456 --stream=tar /backup/mysql 2&> /backup/mysql/backup_out.log 1> /data/backup/mysql/last.tar

gz包
innobackupex-1.5.1 --user=root --password=123456 --stream=tar /backup/mysql 2&> /backup/mysql/backup_out.log | gzip > /backup/mysql/last.tar.gz

遠(yuǎn)程備份
nnobackupex-1.5.1 --user=root --password=123456 --stream=tar /backup/mysql | ssh user@192.168.x.x gzip ">" /backup/mysql/backup.tar.gz

指定數(shù)據(jù)庫備份
innobackupex-1.5.1 --user=root --password=123456 --databases=mytestdb --stream=tar /backup/mysql | gzip > /backup/mysql/mytestdb.tar.gz


對于包的解壓需要說一下
# mkdir /backup/mysql/tmp
# tar ixzvf last.tar.gz -Ctmp 【必須指定 i 參數(shù)才可獲得所有文件,否則只是backup-my.cnf】

看完上述內(nèi)容,你們掌握怎么理解Xtrabackup的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI