【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 查看数据有没有恢复

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

  1. mysql数据备份与恢复_MySQL数据备份与恢复

    常见的MySQL管工具 mysql 命令行 跨平台 MySQL官方bundle包自带 MySQL-Workbench 图形 跨平台 MySQL官方提供 MySQL-Front 图形 Windows 开 ...

  2. 九、Mysql数据备份与恢复

    1.为什么要备份 备份:能够防止由于机器故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方. 冗余: 数据有多份冗余,但不等备份,只能防止机器故障带来的数据丢失,例如主从模式.数据库集 ...

  3. MySQL 数据备份与恢复(小学生篇)

    (此篇文章是我13年学习时候的文章,比较古老了,所以称之为小学生篇)前言:MySQL 数据备份与恢复是很重要的,虽然对于 PHPer 的这方面的知识要求不高,但是也一定要会使用,不然到时候" ...

  4. 【mysql】mysql数据备份与恢复

    数据的重要性不言而喻,所以做好数据的备份工作显得尤其必要,不知不觉我又开始扯犊子了.... 一.逻辑备份与恢复 数据库逻辑备份就是备份软件按照最初设计的逻辑关系,以数据库的逻辑结构对象为单位,将数据库 ...

  5. MySQL数据备份与恢复----------mysqldump-----多种恢复方法

    目录 一. 数据备份的重要性 二. 数据库备份的分类 2.1 从物理与逻辑的角度 2.1.1物理备份 2.1.2 逻辑备份 2.2 从数据库的备份策略角度 2.2.1 完全备份 2.2.2 差异备份 ...

  6. MySQL数据备份与恢复机制详解

    文章目录 前言 备份 按备份类型分 冷备 温备 热备 逻辑备份 mysqldump工具 select ... into outfile others 裸文件备份 XtraBackup 按备份内容分 总 ...

  7. 【学习笔记】MySQL 数据备份与恢复

    数据备份与恢复 数据备份 系统意外崩溃或者硬件的损坏都可以导致数据库的丢失,因此MySQL管理员应该定期备份数据库,使得在意外情况发生时,尽可能减少损失. 使用MySQLdump命令备份 MySQLd ...

  8. MySQL数据备份与恢复及sql语句用法

    1.Mysqldump简介 mysqldump是逻辑备份工具,支持MyISAM和InnoDB引擎.数据库运行时,MyISAM引擎只支持温备,InnoDB支持热备和温备. 2.MySQLdump的应用 ...

  9. 使用DBeaver进行mysql数据备份与恢复

    目录 前言 一.Dbeaver是什么? 二.Dbeaver如何备份与恢复数据 1.备份Mysql数据 2.恢复Mysql数据 三.导入sql失败与解决 ?总结 前言 项目迭代.版本升级的过程中,有时候 ...

最新文章

  1. 求细胞数量pascal题解
  2. hive 如何将数组转成字符串_教你如何将Power Logic的原理图转成Orcad的原理图
  3. Silverlight 解密游戏 之十 自定义粒子特效
  4. GD32F450替换STM32F429
  5. 如何将两个PDF合并成一个?PDF合并方法
  6. (超详细笔记整理)动力节点_老杜 | JavaSE进阶 【P486之后】
  7. 微信小程序——时间轴的实现
  8. 保研夏令营数学复习(高数 概率 线代)
  9. npm包--淘宝镜像下载
  10. 哈勃望远镜研究员测试区块链的空间数据处理
  11. Gartner丨 边缘计算成熟度曲线 2019
  12. 5G射频室内测试的关键技术
  13. 不定期读一篇Paper之SENet
  14. 《从Paxos到zookeeper分布式一致性原理与实践》笔记
  15. adobe acrobat pro dc 无法打开PDF_PDF阅读软件收藏
  16. 计算机桌面上的材料怎么显示,怎样在电脑桌面上显示便签
  17. 雅诗兰黛公司启用旅游零售渠道专用的加尔盖嫩先进分销中心,加强全球履约网络
  18. 句子类型 - 祈使句
  19. MongoDB 聚合管道中使用字符串表达式运算符
  20. 深入理解计算机系统课后题6-35,统计学第六版贾俊平——课后习题答案.pdf

热门文章

  1. java 字符串旋转_Java之左旋转字符串
  2. Vue自定义指令方法
  3. 【excel导出两级表头实现】
  4. 软件设计师七(CPU组成)
  5. java 流程引擎_Activiti流程引擎对象及配置原理解析
  6. OpenSSL命令--x509
  7. XI 学习笔记 - 一些典型场景的练习
  8. 企业ERP管理系统-国内自主研发低代码开发平台
  9. 行为心理学课件——人类行为基础
  10. eclipse java开发插件_10大Java开发必备的Eclipse插件