(1).備份過程
和innobackupex備份過程不同的是,xtrabackup的備份路徑是由"--target-dir"選項嚴格指定的,如果指定的目錄不存在,它備份的時候不會在target-dir目錄中再創建時間戳子目錄。
[root@xuexi data]# xtrabackup --backup --user=root --password=123456 --datadir=/mydata/data --target-dir=/bakdir/fullback[root@xuexi data]# ls /bakdir/fullback backup-my.cnf ibdata1 Performance secure_dir xtrabackup_binlog_info xtrabackup_info backuptest mysql performance_schema world xtrabackup_checkpoints xtrabackup_logfile
(2).準備過程
xtrabackup --prepare --target-dir=/bakdir/fullback
(3).恢復過程
xtrabackup自身不能恢復,只能通過拷貝備份集的方式來恢復。例如使用rsync或者cp等。
另外,恢復時也一樣要求MySQL是stop狀態,datadir是空目錄。并且拷貝完成后要修改datadir中文件的所有者和屬組為mysql用戶和組。
service mysqld stop rm -rf /mydata/data/* rsync -azP /bakdir/fullback/* /mydata/data chown -R mysql.mysql /mydata/data/*
?xtrabackup實現增備
(1).首先進行全備
xtrabackup --backup --user=root --password=123456 --datadir=/mydata/data --target-dir=/bakdir/base_full
(2).進行第一次增備
xtrabackup --backup --user=root --password=123456 --target-dir=/bakdir/incr_bak1 --incremental-basedir=/bakdir/base_full --datadir=/mydata/data/
同樣也可以在增備時使用"--incremental-lsn"來指定從哪個lsn開始增量備份,這和innobackupex是一樣的。
(3).進行第二次增備
xtrabackup --backup --user=root --password=123456 --target-dir=/bakdir/incr_bak2 --incremental-basedir=/bakdir/incr_bak1 --datadir=/mydata/data/
(4).準備過程
準備過程和innobackupex是一樣的,使用"--apply-log-only"來直線向前地應用redo log,同樣,在最后一個增備集的準備過程中不能使用"--apply-log-only"選項。
xtrabackup --prepare --apply-log-only --target-dir=/bakdir/base_full xtrabackup --prepare --apply-log-only --target-dir=/bakdir/base_full --incremental-dir=/bakdir/incr_bak1 xtrabackup --prepare --target-dir=/bakdir/base_full --incremental-dir=/bakdir/incr_bak2
(5).恢復階段
恢復階段即拷貝階段,和前面全備的恢復階段是一樣的,要求MySQL停止運行,datadir是空目錄,拷貝全備目錄到datadir,修改datadir的所有者和屬組。
xtrabackup實現部分備份
xtrabackup部分備份和innobackupex不太一樣,innobackupex的部分備份實質上是在已經備份好的備份集上導出導入表,而xtrabackup直接在備份過程中篩選要備份的目標,它不建立在已有的備份集上。
(1).備份過程
- xtrabackup使用"--tables"選項對應innobackupex的"--include"選項,它們是一樣的,都是正則匹配完整對象引用名稱。
- 使用"--tables-file"選項指定枚舉要備份表的列表,每行一個表,表名需要使用完整對象引用名稱。和innobackupex一樣的。
- 使用"--databases"和"--databases-file"指定要單獨備份的數據庫或表,后者可以枚舉出要備份的列表。這兩個選項不能使用通配符和正則匹配。
例如:
xtrabackup --backup --user=root --password=123456 --target-dir=/bakdir/part_bak1 --datadir=/mydata/data/ --tables="^back*[.]num_*"
(2).準備過程
xtrabackup的部分備份的準備要比innobackupex方便的多,直接對備份集進行"--prepare"即可。
xtrabackup --prepare --target-dir=/bakdir/part_bak1