一、关于备份:

1.备份原因:丢失;删除
2.备份目标:数据的一致性;服务的可靠性
3.备份技术:
(1):物理备份:/冷备份:直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。缺点:拷贝数据, 优点快,缺点服务停止。
(2):逻辑备份/热备份 :mysqldump,mydumper:缺点:效率相对较低
4.备份种类:
(1)完全备份
(2)增量备份:连续回复:MYSQL-DBA 数据库备份_第1张图片
特点:因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时间长。
(3)差异备份:跳跃恢复:
特点:特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后 一次的差异版本(包含所有的差异),恢复速度介于完整备份和增量备份之间。
MYSQL-DBA 数据库备份_第2张图片

二、安装环境、

1.下载软件:percona-xtrabackup
2.logo:MYSQL-DBA 数据库备份_第3张图片
3.简介:MYSQL-DBA 数据库备份_第4张图片
4.官方站点:https://www.percona.com/
5.获得软件包:

(1)访问官方网站:
MYSQL-DBA 数据库备份_第5张图片
(2)MYSQL-DBA 数据库备份_第6张图片
(3)选择版本和系统版本,我选择的是点击帮助文档下载yum源库:
MYSQL-DBA 数据库备份_第7张图片
(4)MYSQL-DBA 数据库备份_第8张图片
(5)MYSQL-DBA 数据库备份
(6)MYSQL-DBA 数据库备份
6.安装yum仓库:
(1):安装percona需要的mysql包
yum install -y https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
yun工具:yum install -y yum-utils
查看mysql可用版本:yum repolist all | grep mysql
MYSQL-DBA 数据库备份_第9张图片
禁用80版本:yum-config-manager --disable mysql80-community
启用57版本:yum-config-manager --enable mysql57-community
注:看自己需求开启需要的版本
yum install mysql-community-libs-compat -y
(2):yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
2.(1)YUM安装percona-xtrabackup:YUM安装percona-xtrabackup //安装percona
注:我们版本不一样,我用的版本是以前都下载好的,后边操作一样:
yum -y install percona-xtrabackup-24.x86_64 //选择你需要的版本
(3)查询安装结果rpm -ql percona-xtrabackup-24
MYSQL-DBA 数据库备份_第10张图片

三、实例1

1.完全备份流程:需要mysql开启二进制日志记录:在配置文件写入,重启即可
log_bin
server-id=2
MYSQL-DBA 数据库备份_第11张图片
2.连接数据库,开始备份:
innobackupex --user=root --password='QianFeng@123' /xtrabackup/full
MYSQL-DBA 数据库备份_第12张图片
看到ok即可MYSQL-DBA 数据库备份_第13张图片
3.备份到的目录:ls /xtrabackup/full/
MYSQL-DBA 数据库备份
4.观看二进制位置:cat /xtrabackup/full/2020-08-28_20-52-00/xtrabackup_binlog_info
如果没开启二进制日志,就没有这个文件
MYSQL-DBA 数据库备份
5.模拟数据库数据丢失:
停止数据库:systemctl stop mysqld
(1)rm -rf /var/lib/mysql/*
rm -rf /var/log/mysqld.log
生成回滚日志:innobackupex --apply-log /xtrabackup/full/2020-08-28_20-52-00/
MYSQL-DBA 数据库备份
(2)恢复日志: innobackupex --copy-back /xtrabackup/full/2020-08-28_20-52-00
MYSQL-DBA 数据库备份
MYSQL-DBA 数据库备份_第14张图片
6.登录验证:
(1)ls /var/lib/mysql //查看mysql 库
MYSQL-DBA 数据库备份
(2)授权给mysql //由于备份文件是属于root,然后mysql没有访问权限,
chown -R mysql.mysql /var/lib/mysql
MYSQL-DBA 数据库备份_第15张图片
(3):重启mysql:systemctl start mysqld
(4)输入密码登录即可
MYSQL-DBA 数据库备份_第16张图片

四、增量备份流程 ,

1.准备工作;使用指定的数据库:
create database testdb; //创建testdb数据库
use testdb; //进入testdb数据库
create table test(id int); //创建tset表结构
insert into test values (1); //写入内容到表中
select from test; //查询表结构
MYSQL-DBA 数据库备份_第17张图片
2.完整备份:一,
(1)需要删除上个实验的备份内容; rm -rf /rm -rf /xtrabackup/full/2020-08-29_09-46-57/
(2)调整时间,date 08240000 时间建议往后调,
MYSQL-DBA 数据库备份
(3)开始备份:
innobackupex --user=root --password='Aa123.123' /xtrabackup
(4)查看备份文件有一条信息 ll /xtrabackup/
MYSQL-DBA 数据库备份
3(1).增量备份:周二:由于时间原因,我们加快时间,注意空格
date 08250000
MYSQL-DBA 数据库备份
(2)增加数据库的内容:
mysql -uroot -p'Aa123.123' -e 'insert into testdb.test values (2)' //这是在数据库外查询库的一系列操作 -e 附加条件
MYSQL-DBA 数据库备份_第18张图片
(3)查询是否成功:
mysql -uroot -p'QianFeng@123' -e 'select
from testdb.test'
MYSQL-DBA 数据库备份_第19张图片
(4):开始备份
innobackupex --user=root --password='Aa123.123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-08-24_00-02-26
在基于完全备份的基础上备份周一到周二之间修改的数据:
MYSQL-DBA 数据库备份
(5)查看备份信息 /xtrabackup/
MYSQL-DBA 数据库备份
(6)增量备份:周三:
(7)修改时间:date 08260000
MYSQL-DBA 数据库备份
(8)增加数据库内容:
mysql -uroot -p’Aa123.123' -e 'insert into testdb.test values (3)'
MYSQL-DBA 数据库备份
(9)查询信息是否写入成功:
mysql -uroot -p'QianFeng@123' -e 'select * from testdb.test'
MYSQL-DBA 数据库备份_第20张图片
(10)备份:
innobackupex --user=root --password='Aa123.123' --incremental /xtrabackup/
--incremental-basedir=/xtrabackup/2020-08-25_00-40-14
MYSQL-DBA 数据库备份

基于周二备份文件的基础上备份周二到周三之间的数据
(11)查看周三的备份文件 ls /xtrabackup/
MYSQL-DBA 数据库备份

以此类推,周四,周五。周六

五、增流程恢复过程:

生成回滚日志:

1.停止数据库: systemctl stop mysqld
2.模拟环境数据损坏:rm -rf /var/lib/mysql/*

3.生成回滚周一的日志:
innobackupex --apply-log --redo-only /xtrabackup/2020-08-24_00-02-26
MYSQL-DBA 数据库备份
4生成回滚日志,基于周一,回滚周一到周二的日志,
innobackupex --apply-log --redo-only /xtrabackup/2020-08-24_00-02-26 --incremental-dir=/xtrabackup/2020-08-25_00-40-14
MYSQL-DBA 数据库备份

恢复:

(1)innobackupex --copy-back /xtrabackup/2020-08-24_00-02-26
恢复周一和周二的备份 看到ok即可
MYSQL-DBA 数据库备份_第21张图片
(2) innobackupex --apply-log --redo-only /xtrabackup/2020-08-24_00-02-26
--incremental-dir=/xtrabackup/2020-08-25_00-40-14
(3)把文件访问权限交给mysql
chown -R mysql.nysql /var/lib/mysql
MYSQL-DBA 数据库备份_第22张图片
(4)启动mysql
systemctl start mysqld
(5)登录 查看,验证
MYSQL-DBA 数据库备份_第23张图片

多个恢复实例:

1.备份不同时间的数据>MYSQL-DBA 数据库备份_第24张图片

2.关闭数据库:

systemctl stop mysqld

3.模拟数据库丢失,删除数据库中的所有文件

rm -rf /var/lib/mysql/*

3.从8月29依次回滚日志到10月1日 回滚,所有日志都到完全备份的文件中

(1)innobackupex --user=root --password='Aa123.123' /xtrabackup
(2)innobackupex --apply-log --redo-only /xtrabackup/2020-08-29_15-31-49 --incremental-dir=/xtrabackup/2020-08-30_00-01-55
(3)innobackupex --apply-log --redo-only /xtrabackup/2020-08-29_15-31-49 --incremental-dir=/xtrabackup/2020-08-31_00-00-44
(4)innobackupex --apply-log --redo-only /xtrabackup/2020-08-29_15-31-49 --incremental-dir=/xtrabackup/2020-10-01_00-00-43
(5)innobackupex --apply-log --redo-only /xtrabackup/2020-08-29_15-31-49 --incremental-dir=/xtrabackup/2020-10-01_00-01-25

4.开始恢复:

innobackupex --copy-back /xtrabackup/2020-08-29_15-31-49 //所有回滚日志都到这个文件中了
MYSQL-DBA 数据库备份_第25张图片

5.文件权限授权给mysql

chown -R mysql.mysql /var/libmysql

6.启动mysql

systemctl start mysqld

7.验证信息
MYSQL-DBA 数据库备份_第26张图片