【MySQL数据备份与恢复】【安装xtrabackup 备份工具】【完全备份流程】【增量备份流程】【差异备份流程】

【MySQL数据备份与恢复】

在这里插入图片描述

1、为什么要备份

  • 备份:能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。
  • 冗余: 数据有多份冗余,但不等备份,只能防止机械故障带来的数据丢失,例如主备模式、数据库集群。
    2.MySQL数据备份需要重视的内容
    备份内容 databases Binlog my.cnf
    所有备份数据都应放在非数据库本地,而且建议有多份副本。
    测试环境中做日常恢复演练,恢复较备份更为重要。

备份过程中必须考虑因素:

  1. 数据的一致性
  2. 服务的可用性
    Mysql A (读写) 压力比较大
    |
    Mysql B (读) 压力比较小 从节点做备份

MySQL 备份类型

1.物理备份: 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。
####1、热备(hot backup)
在线备份,数据库处于运行状态,这种备份方法依赖于数据库的日志文件

  • 对应用基本无影响(但是性能还是会有下降,所以尽量不要在主上做备份,在从库上做)
    ####2、冷备(cold backup)
    备份数据文件,需要停机,是在关闭数据库的时候进行的
  • 备份 datadir 目录下的所有文件
    ####3、温备(warm backup)
  • 针对myisam的备份(myisam不支持热备),备份时候实例只读不可写,数据库锁定表格(不可写入但可读)的状态下进行的
  • 对应用影响很大
  • 通常加一个读锁

物理和逻辑备份的区别

       | 逻辑备份                   

| ---------- | ------------------------------
| 备份方式 | 备份数据库建表、建库、插入sql语句
| 优点 | 备份文件相对较小,只备份表中的数据与结构
| 缺点 | 恢复速度较慢(需要重建索引,存储过程等)
| 对业务影响 | I/O负载加大
| 代表工具 | mysqldump

                   物理备份 

| ----------------------
| 备份方式 | 备份数据库物理文件
| 优点 | 恢复速度比较快
| 缺点 | 备份文件相对较大(备份表空间,包含数据与索引)
| 对业务影响| I/O负载加大
| 代表工具 | ibbackup、xtrabackup,mysqlbackup

MySQL 备份工具xtrabackup

  • 开源社区备份工具
  • 开源免费,上面的免费版本(老版本有问题,备份出来的数据可能有问题)
  • 物理备份

2.物理备份的方式

1.完全备份-----完整备份:
每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。
优点:备份与恢复操作简单方便,恢复时一次恢复到位,恢复速度快
缺点:占用空间大,备份速度慢

2.增量备份: 每次备份上一次备份到现在产生的新数据
只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化.
特点:因而备份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份起按备份时间顺序,逐个备份版本进行恢复,恢复时间长,如中间某次的备份数据损坏,将导致数据的丢失。
在这里插入图片描述

3.差异备份:只备份跟完整备份不一样的
备份那些自从第一次次完全备份之后被修改过的所有文件,备份的时间起点是从第一次的完整备份起,且以后每次备份都是和第一次完整备份进行比较(注意是第一次,不是上一次),备份自第一次完整备份以来所有的修改过的文件。备份数据量会越来越大。
特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后一次的差异版本,恢复速度介于完整备份和增量备份之间。
差异备份

1、安装xtrabackup 备份工具

第二种==
百度搜吧,飞哥这边就是用的这种方式

访问以下链接:
https://zhuanlan.zhihu.com/p/140414143
在这里插入图片描述
在这里插入图片描述
这里我直接找出来拉
直接wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm

步骤2; 解压 查看版本号 确定异性要对
[root ~]# rpm -ivh percona-release-latest.noarch.rpm 解压
[root ~]# yum -y install percona-xtrabackup-24.x86_64 #一定要下载这个版本,不然不兼容
[root ~]# innobackupex -v 查看版本号
在这里插入图片描述
注意错误: 排查
如果安装不上报错:
在这里插入图片描述
解决方式如下:
1.先安装yum install mysql-community-libs-compat -y #安装包
2.在安装yum -y install percona-xtrabackup-24.x86_64
参考:https://www.cnblogs.com/EikiXu/p/10217931.html

方式二: 有点麻烦不建议
1.先安装percona-xtrabackup
2.在安装mysql
或者先将mysql源back了,重新建立yum缓存。在安装percona-xtrabackup。

在这里插入图片描述

完全备份流程: 模拟测试

在这里插入图片描述
步骤1: 先创建 备份目录
mkdir /xtrabackup/full -p 备份之前,进入数据库,存入些数据
步骤2:登录mysql 创建库 或者表 插入一些内容
root@tian xtrabackup]# mysql -u root -p’QianFeng’ 登录
在这里插入图片描述
步骤3:准备备份 细节每步都要 echo $?
innobackupex --user=root --password=‘qf123’ /xtrabackup/full
备份指令 用户 登录密码 备份到那里
在这里插入图片描述
步骤4:完全备份恢复流程
完全备份恢复流程

  1. 停止数
  2. 清理环境 这里公司一般不会用
  3. 重演回滚--> 恢复数据
  4. 修改权限
  5. 启动数据库
    步骤:[root@t]# systemctl stop mysqld 1.关闭数据库
    步骤;[root@]# cd /var/lib/ 先把MySQL备份 细节
    在这里插入图片描述
    步骤5: 在备份目录下 查看 进行 回滚
    [root@tian full]# cd /xtrabackup/full/ 进到这个目录下
    [root@tian full]# innobackupex --apply-log /xtrabackup/full/2021-09-03_20-47-59/
    在这里插入图片描述
    确认回滚完成
    在这里插入图片描述
    步骤6:确认数据库目录:
    恢复之前需要确认配置文件内有数据库目录指定,不然xtrabackup不知道恢复到哪里
    cat /etc/my.cnf 查看一下有这个文件
    [mysqld] 这个字段下
    datadir=/var/lib/mysql 有这个行 指定目录

步骤7;恢复数据
innobackupex --copy-back /xtrabackup/full/2019-08-20_11-47-49
备份工具 恢复指令 恢复到那 那个文件
确认回滚完成
![!](https://img-blog.csdnimg.cn/e7e6bf60311a4fcba1fb03481f12816f.png)
步骤8: 修改权限 恢复启动MySQL 要把权限给mysql用户
[root ~]# chown mysql.mysql /var/lib/mysql -R 递归修改权限 所属者 所属组
在这里插入图片描述
步骤9:启动MySQL 查看数据有没有恢复
systemctl start mysqld
在这里插入图片描述

增量备份流程

原理:每次备份上一次备份到现在产生的新数据
在这里插入图片描述

步骤1:在数据库上面创建一个测试的库
在这里插入图片描述
步骤2:先完整备份 周一
[root@tian full]# rm -rf /xtrabackup/*
[root@tian full]# innobackupex --user=root --password=‘QianFeng@123’ /xtrabackup/
备份指令 用户 登录密码 备份到那里
在这里插入图片描述
查看细节 有没有备份完成
在这里插入图片描述

增量备份:周二 —— 周三

步骤:在数据库中插入周二的数据:
mysql> insert into zenglang2 values(2,‘zhouer’);; #模拟周二
innobackupex --user=root --password=‘qf123’ --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-09-03_21-42-45
备份工具 用户 密码 备份到那 基于那个增量 这个目录 下 这个完整备份文件
在这里插入图片描述
备份完成查看一下有没有完成生成新的文件
cd /xtrabackup/
[root@mysql-server xtrabackup]# ls
2021-09-03_21-42-45 2021-09-03_21-55-16 —相当于周二的增量备份
全备周一 增量周二
在这里插入图片描述
步骤: 在数据库中插入周三的数据: 进行备份基于前一天的
mysql> insert into zenglang2 values(3,‘zhousan’); #模拟周三
innobackupex --user=root --password=‘QianFeng@123’ --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-09-03_21-55-16/ 备份工具 用户 密码 备份到那 基于那个增量 这个目录 下 前一天的文件

在这里插入图片描述
查看是否增量备份完成
[root@tian xtrabackup]# ls
2021-09-03_21-42-45 2021-09-03_21-55-16 2021-09-03_22-06-30—相当于周三的增量备份
全备周一 增量周二 增量周三
在这里插入图片描述
增量备份恢复流程

  1. 停止数据库
  2. 清理环境
  3. 依次重演回滚redo log--> 恢复数据
  4. 修改权限
  5. 启动数据库
  6. 步骤:[root@t]# systemctl stop mysqld 1.关闭数据库
    步骤;[root@]# cd /var/lib/ 先把MySQL备份 细节 有备份就不用备份拉
    在这里插入图片描述
    步骤:依次重演回滚redo log:先回滚完整备份
    innobackupex --apply-log --redo-only /xtrabackup/2019-08-20_14-51-35
    备份工具 回滚指令 先回滚到完整备份
    在这里插入图片描述

步骤:回滚周二
innobackupex --apply-log --redo-only /xtrabackup/2019-08-20_14-51-35 --incremental-dir=/xtrabackup/2019-08-20_15-04-29
备份工具 回滚工具 回到到完整文件 基于周二的文件
在这里插入图片描述
步骤:回滚到周三
innobackupex --apply-log --redo-only /xtrabackup/2019-08-20_14-51-35 --incremental-dir=/xtrabackup/2019-08-20_15-04-29
备份工具 回滚工具 回到到完整文件 基于周三的文件
在这里插入图片描述
查看一下是否完整 细节
在这里插入图片描述
步骤:回滚完整 恢复完整备份即可
恢复数据:
[root@mysql-server ~]# innobackupex --copy-back /xtrabackup/2021-09-03_21-42-45/
备份工具 恢复指令 恢复到那 完整备份
确认回滚完成

在这里插入图片描述
步骤: 修改权限 恢复启动MySQL 要把权限给mysql用户
[root ~]# chown mysql.mysql /var/lib/mysql -R 递归修改权限 所属者 所属组
在这里插入图片描述
步骤9:启动MySQL 查看数据有没有恢复
在这里插入图片描述

差异备份

原理:全部都备份完整备份
在这里插入图片描述

步骤1:在数据库上面创建一个测试的库
在这里插入图片描述
步骤2:先完整备份 周一
[root@tian full]# rm -rf /xtrabackup/*
[root@tian full]# innobackupex --user=root --password=‘QianFeng@123’ /xtrabackup/
备份指令 用户 登录密码 备份到那里
在这里插入图片描述
查看细节 有没有备份完成
在这里插入图片描述

差异备份:周二 —— 周三

步骤:在数据库中插入周二的数据:
mysql> insert into zenglang2 values(2,‘zhouer’);; #模拟周二
innobackupex --user=root --password=‘qf123’ --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-09-03_21-42-45
备份工具 用户 密码 备份到那 基于那个增量 这个目录 下 这个完整备份文件
在这里插入图片描述
备份完成查看一下有没有完成生成新的文件
cd /xtrabackup/
[root@mysql-server xtrabackup]# ls
2021-09-03_21-42-45 2021-09-03_21-55-16 —相当于周二的差异备份
全备周一 差异周二
在这里插入图片描述
步骤: 在数据库中插入周三的数据: 全部备份完整备份
mysql> insert into chayi values(3,‘zhousan’); #模拟周三
innobackupex --user=root --password=‘QianFeng@123’ --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-09-03_23-28-40
备份工具 用户 密码 备份到那 基于那个增量 这个目录 下 完整备份在这里插入图片描述

查看是否差异备份完成
[root@tian xtrabackup]# ls
2021-09-03_21-42-45 2021-09-03_21-55-16 2021-09-03_22-06-30—相当于周三的差异备份
全备周一 差异周二 差异周三
在这里插入图片描述

差异备份恢复流程

  1. 停止数据库
  2. 清理环境
  3. 依次重演回滚redo log--> 恢复数据
  4. 修改权限
  5. 启动数据库
  6. 步骤:[root@t]# systemctl stop mysqld 1.关闭数据库
    步骤;[root@]# cd /var/lib/ 先把MySQL备份 细节 有备份就不用备份拉
    在这里插入图片描述
    步骤:回滚redo log: 先回滚完整备份
    innobackupex --apply-log --redo-only /xtrabackup/2019-08-20_14-51-35
    备份工具 回滚指令 先回滚到完整备份
    在这里插入图片描述

步骤:回滚到哪就显到哪里的数据 可以自己选择
2021-09-03_23-28-40完整差异 2021-09-03_23-31-12 周二 差异 2021-09-03_23-34-10 周三差异
innobackupex --apply-log --redo-only /xtrabackup/2021-09-03_23-28-40/ --incremental-dir=/xtrabackup/2021-09-03_23-34-10

备份工具 回滚工具 回到到完整文件 基于周三的差异文件
在这里插入图片描述

查看一下是否完整 细节
在这里插入图片描述
步骤:回滚完整 恢复完整备份即可
恢复数据:
[root@mysql-server ~]# innobackupex --copy-back /xtrabackup/2021-09-03_21-42-45/
备份工具 恢复指令 恢复到那 完整备份
确认回滚完成

在这里插入图片描述
步骤: 修改权限 恢复启动MySQL 要把权限给mysql用户
[root ~]# chown mysql.mysql /var/lib/mysql -R 递归修改权限 所属者 所属组

在这里插入图片描述
步骤9:启动MySQL 查看数据有没有恢复

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值