共計 2924 個字符,預計需要花費 8 分鐘才能閱讀完成。
怎么理解 Xtrabackup,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
就 Xtrabackup 談一下自己的經歷
Xtrabackup 包括 innobackupex-1.5.1 和 xtrabackup 兩個部分,我用的是新版本 0.9 源碼包。innobackupex-1.5.1 是一個 perl 腳本,在 xtrabackup 上做了一層外包,添加了對 MyISAM 存儲引擎和其他選項的支持。
innobackupex
備份【這里指完整備份】
innobackupex-1.5.1 –user=root –password=123456 /backup/mysql 2 /backup/mysql/backup_out.log
innobackupex-1.5.1 會在備份目錄下生成一個日期時間 HASH 哈希目錄,如:/backup/mysql/2009-10-28_10-40-11。同時也可以將運行過程寫入日志方便以后查看
下面我們來看一下 innobackupex-1.5.1 都幫助我們備份了哪些重要文件
ls -l /backup/mysql/2009-10-28_10-40-11
backup-my.cnf ————備份 MySQL 配置文件 my.cnf
ibdata1 ————備份 InnoDB 數據空間文件
mysql ————備份 mysql 系統庫
mysql-stderr ————innobackupex-1.5.1 運行錯誤信息
mysql-stdout ————innobackupex-1.5.1 運行跟蹤記錄
mytestdb ————備份用戶自定義數據庫
test ————備份 test 庫
xtrabackup_binlog_info ————記錄備份時 binlog 信息和時間點
xtrabackup_checkpoints ————記錄備份類型和時間點
xtrabackup_logfile ————二進制日志
附: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 存儲引擎的表的定義文件、數據文件和索引文件都被備份下來了 ^_^
恢復
———準備日志文件
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
———拷貝備份文件——實際的恢復【好像 MyISAM 的文件拷貝】
innobackupex-1.5.1 –copy-back /backup/mysql/2009-10-28_10-40-11
ls -l /data/dbfile/
查看服務器數據文件目錄,我們看到備份的所有文件已經都 copy 過來了
chown -R mysql.mysql /data/dbfile
修改數據目錄權限
重啟 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 是準備的意思——也就是說它不是直接恢復。同 innobackupex-1.5.1 一樣需要先生成 InnoDB 日志文件 ib_logfile*,所以這里執行 2 次完成恢復前的準備工作
恢復的時候直接拷貝文件到數據目錄即可
假使你誤刪除了數據庫目錄或 InnoDB 相關文件,這樣做可以幫助你恢復到當時的完整數據;假使你只想定時恢復,這樣做會覆蓋當前數據目錄下的文件
區別:
innobackupex-1.5.1 備份了所有數據庫文件【包括表定義文件、數據文件、索引文件】
xtrabackup 只備份 InnoDB 表的數據文件——tablename.ibd 文件,所以我們需要單獨備份表定義文件或 dump 的數據庫結構,否則出現誤刪除數據目錄的情況可就 …uh… 新 dump 的結構和數據不一定對的上哦~
(apply incremental backup)
# ./xtrabackup –prepare –target-dir=/backup/mysql –incremental-dir=/backup/mysql/inc
chown -R mysql.mysql /data/dbfile
修改數據目錄權限
重啟 mysqld 使生效
增量備份待研究,To be continued … [@more@]
innobackupex-1.5.1 備份擴展
打包備份【打包必須指定流 –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
遠程備份
nnobackupex-1.5.1 –user=root –password=123456 –stream=tar /backup/mysql | ssh user@192.168.x.x gzip /backup/mysql/backup.tar.gz
指定數據庫備份
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 參數才可獲得所有文件,否則只是 backup-my.cnf】
看完上述內容,你們掌握怎么理解 Xtrabackup 的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!