【MySQL数据备份与恢复】【安装xtrabackup 备份工具】【完全备份流程】【增量备份流程】【差异备份流程】
【MySQL数据备份与恢复】
1、为什么要备份
- 备份:能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。
- 冗余: 数据有多份冗余,但不等备份,只能防止机械故障带来的数据丢失,例如主备模式、数据库集群。
2.MySQL数据备份需要重视的内容
备份内容 databases Binlog my.cnf
所有备份数据都应放在非数据库本地,而且建议有多份副本。
测试环境中做日常恢复演练,恢复较备份更为重要。
备份过程中必须考虑因素:
- 数据的一致性
- 服务的可用性
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:完全备份恢复流程
完全备份恢复流程
- 停止数
- 清理环境 这里公司一般不会用
- 重演回滚--> 恢复数据
- 修改权限
- 启动数据库
步骤:[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—相当于周三的增量备份
全备周一 增量周二 增量周三
增量备份恢复流程
- 停止数据库
- 清理环境
- 依次重演回滚redo log--> 恢复数据
- 修改权限
- 启动数据库
- 步骤:[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—相当于周三的差异备份
全备周一 差异周二 差异周三
差异备份恢复流程
- 停止数据库
- 清理环境
- 依次重演回滚redo log--> 恢复数据
- 修改权限
- 启动数据库
- 步骤:[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 备份工具】【完全备份流程】【增量备份流程】【差异备份流程】相关推荐
- mysql数据备份与恢复_MySQL数据备份与恢复
常见的MySQL管工具 mysql 命令行 跨平台 MySQL官方bundle包自带 MySQL-Workbench 图形 跨平台 MySQL官方提供 MySQL-Front 图形 Windows 开 ...
- 九、Mysql数据备份与恢复
1.为什么要备份 备份:能够防止由于机器故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方. 冗余: 数据有多份冗余,但不等备份,只能防止机器故障带来的数据丢失,例如主从模式.数据库集 ...
- MySQL 数据备份与恢复(小学生篇)
(此篇文章是我13年学习时候的文章,比较古老了,所以称之为小学生篇)前言:MySQL 数据备份与恢复是很重要的,虽然对于 PHPer 的这方面的知识要求不高,但是也一定要会使用,不然到时候" ...
- 【mysql】mysql数据备份与恢复
数据的重要性不言而喻,所以做好数据的备份工作显得尤其必要,不知不觉我又开始扯犊子了.... 一.逻辑备份与恢复 数据库逻辑备份就是备份软件按照最初设计的逻辑关系,以数据库的逻辑结构对象为单位,将数据库 ...
- MySQL数据备份与恢复----------mysqldump-----多种恢复方法
目录 一. 数据备份的重要性 二. 数据库备份的分类 2.1 从物理与逻辑的角度 2.1.1物理备份 2.1.2 逻辑备份 2.2 从数据库的备份策略角度 2.2.1 完全备份 2.2.2 差异备份 ...
- MySQL数据备份与恢复机制详解
文章目录 前言 备份 按备份类型分 冷备 温备 热备 逻辑备份 mysqldump工具 select ... into outfile others 裸文件备份 XtraBackup 按备份内容分 总 ...
- 【学习笔记】MySQL 数据备份与恢复
数据备份与恢复 数据备份 系统意外崩溃或者硬件的损坏都可以导致数据库的丢失,因此MySQL管理员应该定期备份数据库,使得在意外情况发生时,尽可能减少损失. 使用MySQLdump命令备份 MySQLd ...
- MySQL数据备份与恢复及sql语句用法
1.Mysqldump简介 mysqldump是逻辑备份工具,支持MyISAM和InnoDB引擎.数据库运行时,MyISAM引擎只支持温备,InnoDB支持热备和温备. 2.MySQLdump的应用 ...
- 使用DBeaver进行mysql数据备份与恢复
目录 前言 一.Dbeaver是什么? 二.Dbeaver如何备份与恢复数据 1.备份Mysql数据 2.恢复Mysql数据 三.导入sql失败与解决 ?总结 前言 项目迭代.版本升级的过程中,有时候 ...
最新文章
- 求细胞数量pascal题解
- hive 如何将数组转成字符串_教你如何将Power Logic的原理图转成Orcad的原理图
- Silverlight 解密游戏 之十 自定义粒子特效
- GD32F450替换STM32F429
- 如何将两个PDF合并成一个?PDF合并方法
- (超详细笔记整理)动力节点_老杜 | JavaSE进阶 【P486之后】
- 微信小程序——时间轴的实现
- 保研夏令营数学复习(高数 概率 线代)
- npm包--淘宝镜像下载
- 哈勃望远镜研究员测试区块链的空间数据处理
- Gartner丨 边缘计算成熟度曲线 2019
- 5G射频室内测试的关键技术
- 不定期读一篇Paper之SENet
- 《从Paxos到zookeeper分布式一致性原理与实践》笔记
- adobe acrobat pro dc 无法打开PDF_PDF阅读软件收藏
- 计算机桌面上的材料怎么显示,怎样在电脑桌面上显示便签
- 雅诗兰黛公司启用旅游零售渠道专用的加尔盖嫩先进分销中心,加强全球履约网络
- 句子类型 - 祈使句
- MongoDB 聚合管道中使用字符串表达式运算符
- 深入理解计算机系统课后题6-35,统计学第六版贾俊平——课后习题答案.pdf