一、关于备份:

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)登录 查看,验证

多个恢复实例:

1.备份不同时间的数据>

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

7.验证信息