数据操作有风险 本文仅提供学习交流 操作需谨慎

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目录内
linuxMysql数据备份_percona-xtrabackup

cat /xtrabackup/full/2020-09-02_02-26-22/xtrabackup_binlog_info 查看备份的二进制文件的位置
linuxMysql数据备份_percona-xtrabackup

数据恢复

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]’ 进入数据库 查看数据正常
linuxMysql数据备份_percona-xtrabackup

Percona-xtrabackup 增量备份

首先我们准备环境用来测试
创建一个数据库testdb 在库中创建一个test表 一个id字段
linuxMysql数据备份_percona-xtrabackup

innobackupex --user=root --password=‘[email protected]’ /xtrabackup/ 先完全备份到xtrabackup目录

linuxMysql数据备份_percona-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指定基于的完全备份的目录
linuxMysql数据备份_percona-xtrabackup

模拟增量备份第三天
首先更改时间
[[email protected] ~]# date 09050000
2020年 09月 05日 星期五 00:00:00 CST
mysql -uroot -p’[email protected]’ -e’insert into testdb.test values(2)’ 给表中添加第三条记录
linuxMysql数据备份_percona-xtrabackup

基于上次增量备份再进行一次增量备份
innobackupex --user=root --password=‘[email protected]’ --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-09-04_00-04-18
这样我们就得到了一个完全备份和两个增量备份的文件
linuxMysql数据备份_percona-xtrabackup

增量备份的恢复

首先我们需要停掉mysql服务然后清理/var/lib/mysql/下的文件
rm -rf /var/lib/mysql/*

linuxMysql数据备份_percona-xtrabackup

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表中的数据 已恢复到模拟损坏前

linuxMysql数据备份_percona-xtrabackup

相关文章: