安装Xtrabackup 1 2 3 4 # 安装Percona的repository yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm #安装xtrabackup yum install percona-xtrabackup-24 -y
建立并授权数据库备份账号 1 2 3 4 mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret'; mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost'; mysql> FLUSH PRIVILEGES;
配置备份存放位置 1 2 3 vim /etc/my.cnf [xtrabackup] target_dir = /data/backups/mysql/ #或者在命令行指定参数--target-dir=/data/backups/mysql
完全备份 全量备份
1 2 xtrabackup --user=bkpuser --password=s3cret --backup --target-dir=/data/backups/ #将数据备份到/data/backups,如果目录不存在将创建,如果目录存在且不是空目录,则会备份失败
全量备份的数据恢复
1 2 3 4 5 6 7 8 9 1.准备恢复文件 xtrabackup --prepare --target-dir=/data/backups/ #过程不能中断,中断会无法保证恢复数据有效性 2.恢复备份 #恢复前关闭MySQL服务,并保证恢复的目录是空的 xtrabackup --copy-back --target-dir=/data/backups/ 或者 rsync -avrP /data/backups/ /var/lib/mysql/ chown -R mysql:mysql /var/lib/mysql
增量备份 先做全量备份 1 xtrabackup --user=bkpuser --password=s3cret --backup --target-dir=/data/backups/base
基于全量备份做增量备份 1 2 xtrabackup --user=bkpuser --password=s3cret --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base xtrabackup --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1
增量备份的数据恢复 准备数据 a.准备全量备份的数据
1 2 xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base #--apply-log-only是必须的,放在回滚,导致备份不可用
b.准备增量备份的数据
1 xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base --incremental-dir=/data/backups/inc1
c.以此类推,准备最后一个增量备份数据(注意最后一个增量文件可以不需要 参数–apply-log-only )
1 xtrabackup --prepare --target-dir=/data/backups/base --incremental-dir=/data/backups/inc2
2.恢复备份
1 2 3 4 5 #恢复前关闭MySQL服务,并保证恢复的目录是空的 xtrabackup --copy-back --target-dir=/data/backups/ 或者直接拷贝 rsync -avrP /data/backup/ /var/lib/mysql/ chown -R mysql:mysql /var/lib/mysql