innobackex工具备份mysql数据
xtrbackup只能用于备份innodb引擎的数据库,而innobackex 既可以备份innodb引擎的数据库,也可以备份myisam引擎的数据库。备份时也可分为全量备份和增量备份
一、安装innobackex
使用官网的yum源,方便安装
[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
二、全量备份mysql
2.1、创建并授权备份用户
我们可以直接授权all权限,但是不符合安全原则
mysql -uroot -paxianglinux
grant reload,lock tables,replication client on *.* to 'backupuser'@'localhost' identified by 'axianglinux';
flush privileges;
- 权限为reload,lock tables,replication client
2.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
- defaults-file=/etc/my.cnf指定配置文件位置是为了获得datadir位置
- 备份完成后,会在指定的保存目录中生成一个时间戳目录
如图,备份失败也会出现
三、全量备份恢复
3.1、模拟误删除MySQL数据目录故障
[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.2、恢复
[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!
四、增量备份
之前我们已经进行了全量备份,经过操作,一段时间后重新全量备份的话,需要耗费的资源较多,这时我们就可以使用增量备份了。
两次增量备份
[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