1.关于备份:
MySQL中有完全备份、增量备份和差异备份三种常见的备份策略,这次使用差异备份
定义:差异备份备份自上一次完全备份以来发生变化的数据。
特点:也依赖于完全备份,但与增量备份不同,它只关注自上一次完全备份以来的变化,不考虑增量备份。
优点:备份文件相对较小,比完全备份节省空间。恢复过程相对增量备份简单,因为只需结合最近一次完全备份和差异备份
缺点:恢复时需要结合完全备份和差异备份,可能稍慢于完全备份恢复。浪费一定空间,因为每次差异备份都会包含自上次完全备份以来的所有变化。
2.下载备份软件percona-xtrabackup80(mysql80)
安装yum仓库
YUM安装perconna仓库
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
如果无法直接安装,可以尝试先下载,再安装
wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install -y percona-release-latest.noarch.rpm
安装之前先启用perconna仓库
percona-release enable-only tools release
注意:xtrabackup8.0只支持mysql8.0以上的版本,mysql5.7或以下需要使用xtrabackup8.0以下的版本
yum install percona-xtrabackup-83
3.差异备份
不管是什么备份,首先都要进行一次完整备份
只需准备第一次和最后一次即可
1、清理之前的备份内容
rm -rf /data/backup/
2、进行完整备份
mkdir -p /data/backup/
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/base/ -uroot -pLiuDeHua@123 -H localhost -P 3306 --no-server-version-check
3、添加数据
做数据修改
use add1;
insert into t1 values (5,'差异1'),(6,'差异1');
4、开始差异1:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc1/ --incremental-basedir=/data/backup/base/ -u root -pLiuDeHua@123 -H localhost -P 3306 --no-server-version-check
差异和增量备份的区别:
增量参照的目标文件是上次备份的文件
差异参照的目标文件永远是完全备份的文件
5、再次修改数据
use add1;
insert into t1 values (7,'差异2'),(8,'差异2');
6、开始差异2
只需修改备份的位置,参照文件不变
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc2/ --incremental-basedir=/data/backup/base/ -u root -pLiuDeHua@123 -H localhost -P 3306 --no-server-version-check
7、第三次修改数据
use add1;
insert into t1 values (9,'差异3'),(10,'差异3');
8、开始差异备份3
只需修改备份的位置,参照文件不变
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc3/ --incremental-basedir=/data/backup/base/ -u root -pLiuDeHua@123 -H localhost -P 3306 --no-server-version-check
ls /data/backup/
base inc1 inc2 inc3
恢复差异备份
差异备份恢复,只需准备第一次的,和要恢复的那次备份
1、应用完整备份:
xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/base/ --no-server-version-check
2、应用最后一次的差异备份(此处以恢复最后一次为例):
–apply-log-only不要写这个
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/backup/base/ --incremental-dir=/data/backup/inc3/ --no-server-version-check
3、清库
删库
systemctl stop mysqld
rm -rf /var/lib/mysql/*
开始恢复
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/base/
授权
chown -R mysql.mysql /var/lib/mysql
重启并登录数据库
systemctl restart mysqld
登录msqyl,查看数据库
msyql -uroot -p'密码'
show databases;