一、关于备份:
1.备份原因:丢失;删除
2.备份目标:数据的一致性;服务的可靠性
3.备份技术:
(1):物理备份:/冷备份:直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。缺点:拷贝数据, 优点快,缺点服务停止。
(2):逻辑备份/热备份 :mysqldump,mydumper:缺点:效率相对较低
4.备份种类:
(1)完全备份
(2)增量备份:连续回复:
特点:因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时间长。
(3)差异备份:跳跃恢复:
特点:特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后 一次的差异版本(包含所有的差异),恢复速度介于完整备份和增量备份之间。
二、安装环境、
1.下载软件:percona-xtrabackup
2.logo:
3.简介:
4.官方站点:https://www.percona.com/
5.获得软件包:
(1)访问官方网站:
(2)
(3)选择版本和系统版本,我选择的是点击帮助文档下载yum源库:
(4)
(5)
(6)
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
禁用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三、实例1
1.完全备份流程:需要mysql开启二进制日志记录:在配置文件写入,重启即可
log_bin
server-id=2
2.连接数据库,开始备份:
innobackupex --user=root --password='QianFeng@123' /xtrabackup/full
看到ok即可
3.备份到的目录:ls /xtrabackup/full/
4.观看二进制位置:cat /xtrabackup/full/2020-08-28_20-52-00/xtrabackup_binlog_info
如果没开启二进制日志,就没有这个文件
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/
(2)恢复日志: innobackupex --copy-back /xtrabackup/full/2020-08-28_20-52-00
6.登录验证:
(1)ls /var/lib/mysql //查看mysql 库
(2)授权给mysql //由于备份文件是属于root,然后mysql没有访问权限,
chown -R mysql.mysql /var/lib/mysql
(3):重启mysql:systemctl start mysqld
(4)输入密码登录即可四、增量备份流程 ,
1.准备工作;使用指定的数据库:
create database testdb; //创建testdb数据库
use testdb; //进入testdb数据库
create table test(id int); //创建tset表结构
insert into test values (1); //写入内容到表中
select from test; //查询表结构
2.完整备份:一,
(1)需要删除上个实验的备份内容; rm -rf /rm -rf /xtrabackup/full/2020-08-29_09-46-57/
(2)调整时间,date 08240000 时间建议往后调,
(3)开始备份:
innobackupex --user=root --password='Aa123.123' /xtrabackup
(4)查看备份文件有一条信息 ll /xtrabackup/
3(1).增量备份:周二:由于时间原因,我们加快时间,注意空格
date 08250000
(2)增加数据库的内容:
mysql -uroot -p'Aa123.123' -e 'insert into testdb.test values (2)' //这是在数据库外查询库的一系列操作 -e 附加条件
(3)查询是否成功:
mysql -uroot -p'QianFeng@123' -e 'select from testdb.test'
(4):开始备份
innobackupex --user=root --password='Aa123.123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-08-24_00-02-26
在基于完全备份的基础上备份周一到周二之间修改的数据:
(5)查看备份信息 /xtrabackup/
(6)增量备份:周三:
(7)修改时间:date 08260000
(8)增加数据库内容:
mysql -uroot -p’Aa123.123' -e 'insert into testdb.test values (3)'
(9)查询信息是否写入成功:
mysql -uroot -p'QianFeng@123' -e 'select * from testdb.test'
(10)备份:
innobackupex --user=root --password='Aa123.123' --incremental /xtrabackup/
--incremental-basedir=/xtrabackup/2020-08-25_00-40-14基于周二备份文件的基础上备份周二到周三之间的数据
(11)查看周三的备份文件 ls /xtrabackup/以此类推,周四,周五。周六
五、增流程恢复过程:
生成回滚日志:
1.停止数据库: systemctl stop mysqld
2.模拟环境数据损坏:rm -rf /var/lib/mysql/*
3.生成回滚周一的日志:
innobackupex --apply-log --redo-only /xtrabackup/2020-08-24_00-02-26
4生成回滚日志,基于周一,回滚周一到周二的日志,
innobackupex --apply-log --redo-only /xtrabackup/2020-08-24_00-02-26 --incremental-dir=/xtrabackup/2020-08-25_00-40-14
恢复:
(1)innobackupex --copy-back /xtrabackup/2020-08-24_00-02-26
恢复周一和周二的备份 看到ok即可
(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
(4)启动mysql
systemctl start mysqld
(5)登录 查看,验证多个恢复实例:
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 //所有回滚日志都到这个文件中了
5.文件权限授权给mysql
chown -R mysql.mysql /var/libmysql
6.启动mysql
systemctl start mysqld