数据操作有风险 本文仅提供学习交流 操作需谨慎
Percona-xtrabackup
官网下载该软件https://www.percona.com/
安装percona所需的mysql包
yum install -y https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm 安装mysql官方源
yum install -y yum-utils 安装yum工具
yum repolist all |grep mysql 查看默认安装的mysql版本
yum-config-manager-disable mysql80-community 关闭mysql80版本
yum-config-manager- -enable mysql57-community 开启mysql57版本
yum install mysql-community-libs-compat-y
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm 安装precona
yum -qa |grep precoma 查看是否正常安装
precoma xtarbackup 完全备份
innobackupex --user=root --password=‘[email protected]’ /xtrabackup/full 完全备份数据库到/xtrabackup/full目录内
cat /xtrabackup/full/2020-09-02_02-26-22/xtrabackup_binlog_info 查看备份的二进制文件的位置
数据恢复
Systemctl stop mysqld 停止mysql服务
删除mysql数据 模拟数据丢失
rm -rf /var/lib/mysql/*
rm -rf /var/log/mysqld.log
开始恢复
innobackupex --apply-back /xtrabackup/full/2020-09-02_02-26-22/ 指定恢复点
innobackupex --copy-back /xtrabackup/full/2020-09-02_02-26-22/ 恢复备份
chown -R mysql.mysql /var/lib/mysql/ 更改权限 因为是root拷贝进来的 所以mysql没有权限运行
systemctl start mysqld 开启MySQL服务
mysql -uroot -p’[email protected]’ 进入数据库 查看数据正常
Percona-xtrabackup 增量备份
首先我们准备环境用来测试
创建一个数据库testdb 在库中创建一个test表 一个id字段
innobackupex --user=root --password=‘[email protected]’ /xtrabackup/ 先完全备份到xtrabackup目录
接下来我们调整一下时间 模拟第二天后进行增量备份
[[email protected] ~]# date 09030000
2020年 09月 03日 星期四 00:00:00 CST
mysql -uroot -p’[email protected]’ -e 'insert into testdb.test values (2)'在表中插入一行记录
innobackupex --user=root --password=‘[email protected]’ --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-09-02_03-20-56
incremental 指定保存备份的目录
incremental-basedir指定基于的完全备份的目录
模拟增量备份第三天
首先更改时间
[[email protected] ~]# date 09050000
2020年 09月 05日 星期五 00:00:00 CST
mysql -uroot -p’[email protected]’ -e’insert into testdb.test values(2)’ 给表中添加第三条记录
基于上次增量备份再进行一次增量备份
innobackupex --user=root --password=‘[email protected]’ --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-09-04_00-04-18
这样我们就得到了一个完全备份和两个增量备份的文件
增量备份的恢复
首先我们需要停掉mysql服务然后清理/var/lib/mysql/下的文件
rm -rf /var/lib/mysql/*
innobackupex --apply-log --redo-only /xtrabackup/2020-09-02_03-20-56 回滚合并
innobackupex --apply-log --redo-only /xtrabackup/2020-09-02_03-20-56 --incremental-dir=/xtrabackup/2020-09-04_00-04-18 合并第二天
innobackupex --apply-log --redo-only /xtrabackup/2020-09-02_03-20-56 --incremental-dir=/xtrabackup/2020-09-06_00-08-09 合并第三天
innobackupex --copy-back /xtrabackup/2020-09-02_03-20-56 恢复数据
chown -R mysql.mysql /var/lib/mysql/ 更改属性为MySQL 启动mysql
mysql -uroot -p’[email protected]’ -e’select * from testdb.test’ 查看test表中的数据 已恢复到模拟损坏前