Percona XtraBackup InnoDB 備份工具

Percona XtraBackup 是一套 compiled C 程式,用於備份 MySQL InnoDB 資料庫,過去備份 MyISAM 或 InnoDB 都是透過 mysqldump 指令,或者是直接 copy /var/lib/mysql 目錄當作備份(這方法盡量少做,請確定 MySQL 版本一致),XtraBackup 用於備份 InnoDB 資料部份,請注意這邊,真的只有"備份資料",而不是全部(結構跟資料),底下仔細介紹如何安裝:

安裝方式 大家可以選擇透過

yumapt Repository 方式安裝,下面介紹 apt 方式即可。

$ gpg --keyserver  hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
$ gpg -a --export CD2EFD2A | sudo apt-key add -
將 apt 伺服器寫入

/etc/apt/sources.list

deb http://repo.percona.com/apt VERSION main
deb-src http://repo.percona.com/apt VERSION main
VERSION 請至換 Ubuntu Server 版號,如果您想測試實驗性版本請加入底下連結
deb http://repo.percona.com/apt VERSION main experimental
deb-src http://repo.percona.com/apt VERSION main experimental

注意事項 根據不同的 MySQL 版本來選擇 XtraBackup 指令,可以參考

Choosing the Right Binary,所以大家不要用錯指令了。 透過寫入 my.cnf 可以設定備份目錄,此步驟可以省略

[xtrabackup]
target_dir = /home/backups/mysql/

完整備份 可以備份 InnoDB data and log files 從 /var/lib/mysql/ 到 /home/backups/mysql/

$ xtrabackup --defaults-file=/etc/mysql/my.cnf --backup --target-dir=/home/backup/mysql --datadir=/var/lib/mysql
--defaults-file 吃 MySQL 設定檔,我們可以另外指定 --target-dir 備份目錄,如果之前你有寫入 my.cnf,指令就可以少寫 --target-dir,備份完成以後,我們需要 Prepare 兩次 MySQL Data
$ xtrabackup --defaults-file=/etc/mysql/my.cnf --prepare --target-dir=/home/backup/mysql
看到底下訊息就代表成功了
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
130101 11:55:26  InnoDB: Starting shutdown...
130101 11:55:30  InnoDB: Shutdown completed; log sequence number 450927116

恢復備份資料 XtraBackup 程式並非用於備份 MyISAM 資料及 .frm 檔案,所以必須分開備份,底下是用於恢復 InnoDB 資料

$ cd /home/backup/mysql/
$ rsync -rvt --exclude 'xtrabackup_checkpoints' --exclude 'xtrabackup_logfile' ./ /var/lib/mysql
$ chown -R mysql:mysql /var/lib/mysql/
$ service mysql restart
另外請記的先備份 .frm 檔案,沒 .frm 檔案,備份資料就沒有用了。

See also