xtrbackup只能用於備份innodb引擎的數據庫,而innobackex 既能夠備份innodb引擎的數據庫,也能夠備份myisam引擎的數據庫。備份時也可分爲全量備份和增量備份mysql
使用官網的yum源,方便安裝linux
[root@axiang-02 ~]# rpm -ivh https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm [root@axiang-02 ~]# yum install percona-xtrabackup
2.一、建立並受權備份用戶sql
咱們能夠直接受權all權限,可是不符合安全原則數據庫
mysql -uroot -paxianglinux grant reload,lock tables,replication client on *.* to 'backupuser'@'localhost' identified by 'axianglinux'; flush privileges;
2.二、所有備份安全
[root@axiang-02 ~]# mkdir /data/backup [root@axiang-02 ~]# innobackupex --defaults-file=/etc/my.cnf --user=backupuser --password='axianglinux' -S /tmp/mysql.sock /data/backup
如圖,備份失敗也會出現app
3.一、模擬誤刪除MySQL數據目錄故障ide
[root@axiang-02 ~]# /etc/init.d/mysqld stop [root@axiang-02 ~]# mv /data/mysql /data/mysql.bak [root@axiang-02 ~]# mkdir /data/mysql [root@axiang-02 ~]# chown -R mysql:mysql /data/mysql
若是權限沒給 -R 則恢復後沒法開啓MySQL服務。如上圖工具
3.二、恢復code
[root@axiang-02 ~]# ls /data/backup/ 2017-08-28_20-47-25 [root@axiang-02 ~]# innobackupex --use-memory=512M --apply-log /data/backup/2017-08-28_20-47-25/ [root@axiang-02 ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup/2017-08-28_20-47-25/ [root@axiang-02 ~]# /etc/init.d/mysqld start Starting MySQL. SUCCESS!
以前咱們已經進行了全量備份,通過操做,一段時間後從新全量備份的話,須要耗費的資源較多,這時咱們就可使用增量備份了。blog
兩次增量備份
[root@axiang-02 ~]# rm -rf /data/backup/* [root@axiang-02 ~]# innobackupex --defaults-file=/etc/my.cnf --user=backupuser --password='axianglinux' -S /tmp/mysql.sock /data/backup [root@axiang-02 ~]# mysql -uroot -paxianglinux -e 'drop database bbs;' [root@axiang-02 ~]# innobackupex --defaults-file=/etc/my.cnf --user=backupuser --password='axianglinux' -S /tmp/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/2017-08-28_23-18-20 [root@axiang-02 ~]# mysql -uroot -paxianglinux -e 'drop database blog;' [root@axiang-02 ~]# innobackupex --defaults-file=/etc/my.cnf --user=backupuser --password='axianglinux' -S /tmp/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/2017-08-28_23-24-32
在每一個備份的時間戳目錄下面都有一個檢查點。能夠肯定恢復順序
模擬故障,移除原有數據
[root@axiang-02 ~]# /etc/init.d/mysqld stop [root@axiang-02 ~]# mv /data/mysql /data/mysql.backup [root@axiang-02 ~]# mkdir /data/mysql [root@axiang-02 ~]# chown -R mysql:mysql /data/mysql
恢復
innobackupex --apply-log --redo-only /data/backup/2017-08-28_23-18-20 innobackupex --apply-log --redo-only /data/backup/2017-08-28_23-18-20 --incremental-dir=/data/backup/2017-08-28_23-24-32 innobackupex --apply-log /data/backup/2017-08-28_23-18-20 --incremental-dir=/data/backup/2017-08-28_23-27-39 innobackupex --copy-back /data/backup/2017-08-28_23-18-20/ chown -R mysql:mysql /data/mysql /etc/init.d/mysqld start