xtrabackup備份恢復mysql全備(一) Xtrabackup 是percona公司的開源項目,用以實現類似innodb官方的熱備份工具InnoDB Hot Backup的功能,能夠非常快速地備份與恢復mysql數據庫。Xtrabackup中包含兩個工具: xtrabackup是用於熱備份innodb和xtradb表中數據的工具,不能備份其他引擎的表,也不能備份數據表結構; innobackupex是將xtrabackup進行封裝的perl腳本,提供了備份myisam表的能力。 安裝rpm包,rpm包可以從官網下載 [root@aeolus1 ~]# rpm -ivh percona-xtrabackup-2.1.3-608.rhel5.x86_64.rpm warning: percona-xtrabackup-2.1.3-608.rhel5.x86_64.rpm: Header V4 DSA signature: NOKEY, key ID cd2efd2a Preparing... ########################################### [100%] 1:percona-xtrabackup ########################################### [100%] 安裝完畢,在/usr/bin 下有如下兩個工具innobackupex和xtrabackup root@aeolus1 bin]# ll inno* -rwxr-xr-x 1 root root 110738 May 23 02:24 innobackupex lrwxrwxrwx 1 root root 12 Jun 9 18:18 innobackupex-1.5.1 -> innobackupex [root@aeolus1 bin]# ll *xtrabackup* -rwxr-xr-x 1 root root 2894280 May 23 02:25 xtrabackup -rwxr-xr-x 1 root root 4494952 May 23 02:25 xtrabackup_55 -rwxr-xr-x 1 root root 11633272 May 23 02:25 xtrabackup_56 通過一個實例,展現xtrabackup全備完整的備份恢復過程,以及注意的問題。 1 創建一個全備 Innobackupex --user=root --password=passwd /root/mysqlbackup/ 這樣就創建了一個全備,備份文件存儲在以時間戳為目錄名下面, 還有以下選項 --defaults-file=/etc/my.cnf 備份時使用的mysql配置文件 --no-timestamp 不以時間戳命名目錄名 2 創建了備份之後,數據還不能用於恢復。一些某提交的事務還可能未撤銷或者日志中的事務要重播,為了保證數據一致性,我們需要apply日志到備份的文件上。 innobackupex --apply-log /root/mysqlbackup/2013-06-14_16-20-56 這樣備份的數據就可以應用與恢復 3 drop database mysql 然後恢復 innobackupex --user=root --copy-back /root/mysqlbackup/2013-06-14_16-20-56 恢復完畢,改變數據文件的權限,啟動數據庫 chown -R mysql:mysql /usr/local/mysql/data 需要注意的是,全恢復情況下, 1 服務器必須關閉,只要部分恢復的時候,服務器不用關閉。 2 datadir參數目錄必須為空,如果存在文件,--copy-back 將不拷貝 3 每次操作完畢,確認日志最後是否有 innobackupex: completed OK!標志著動作的完成。