Mysql备份与还原

一、数据备份的重要性

1、备份的主要目的是灾难恢复

2、在生产环境中,数据的安全性至关重要

3、任何数据的丢失都可能产生严重的后果

4、造成数据丢失的原因

  • 程序错误
  • 人为操作错误
  • 运算错误
  • 磁盘故障
  • 灾难 (如火灾、地震) 和盗窃

二、数据库备份类型

2.1 物理备份

数据库备份可以分为物理备份逻辑备份。物理备份是对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。这种类型的备份适用于在出现问题的时候需要快速恢复的大型重要数据库。物理备份又可以成为冷备份(脱机备份)、热备份(连接备份)和温备份

① 冷备份 (脱机备份)

冷备份 (脱机备份) :是在关闭数据库的时候进行的(tar)

冷备份也被称为脱机备份,它是指在数据库关闭的情况下进行的备份操作,因此也被称为全备份。

② 热备份 (联机备份)

热备份 (联机备份) :数据库处于运行状态,依赖于数据库的日志文件

热备份也称为在线备份,这种备份在数据库运行(在线)状态下进行,可以提供24x7的服务,不会因为备份而影响业务的正常运行。

③ 温备份

温备份 :数据库锁定表格(不可写入但可读)的状态下进行备份操作

温备份介于冷备份和热备份之间。一般来讲,温备份是指数据库在非峰值时间进行的备份,这时数据库可能未关闭但流量较小。和冷备份与热备份相比,温备份的优点是可以供不停机的环境下用作备份,同时也不会像热备份那样对在线服务产生太大影响。

2.2 逻辑备份

从数据库的备份策略角度来看,逻辑备份又可分为完全备份、差异备份和增量备份

① 完全备份

每次都进行完全备份,会导致备份文件占用空间巨大,并且有大量的重复数据; 恢复时,直接使

用完全备份的文件即可

② 差异备份

每次差异备份,都会备份上一次完全备份之后的数据,可能会出现重复数据。;恢复时,先恢复

完全备份的数据,再恢复差异备份的数据

③ 增量备份

每次增量备份都是备份在上一次完全备份或者增量备份之后的数据,不会出现重复数据的情况,也不会占用额外的磁盘空间恢复数据,需要按照次序恢复完全备份和增量备份的数据

备份方式比较

三、常见的备份方法

3.1 物理冷备

备份时数据库处于关闭状态,直接打包数据库文件(tar)

备份速度快,恢复时也是最简单的

3.2 专用备份工具 mysqldump 或 mysqlhotcopy

mysqldump 常用的逻辑备份工具

mysqlhotcopy 仅拥有备份 MyISAM 和 ARCHIVE 表

3.3 启用二进制日志进行增量备份

进行增量备份,需要刷新二进制日志

MySQL支持增量备份,进行增量备份时必须启用二进制日志 。二进制日志文件为用户提供复制,对执行备份点后进行的数据库更改所需的信息进行恢复。如果进行增量备份(包含自上次完全备份或增量备份以来发生的数据修改),需要刷新二进制日志。

3.4 第三方工具备份

免费的MySQL 热备份软件 Percona XtraBackup mysqlbackup

四、MySQL完全备份

  • 是对整个数据库、数据库结构和文件结构的备份
  • 保存的是备份完成时刻的数据库
  • 是差异备份与增量备份的基础
  • MySQL完全备份优缺点

1、优点:

备份与恢复操作简单方便

2、缺点:

数据存在大量的重复

占用大量的备份空间

备份与恢复时间长

五、数据库完全备份分类

5.1 物理冷备份与恢复

关闭MySQL数据库

使用tar命令直接打包数据库文件夹

直接替换现有MySQL目录即可

5.2 mysqldump备份与恢复

MySQL自带的备份工具,可方便实现对MySQL的备份

可以将指定的库、表导出为SQL 脚本

使用命令mysq|导入备份的数据

六、实战案列

6.1生产环境中数据库备份方法

6.2 MySQL 增量备份与恢复

6.2.1 MySQL数据库增量恢复

1.一般恢复:

将所有备份的二进制日志内容全部恢复

2.基于位置恢复

数据库在某一时间点可能既有错误的操作也有正确的操作

可以基于精准的位置跳过错误的操作

发生错误节点之前的一个节点,上一次正确操作的位置点停止

3.基于时间点恢复

跳过某个发生错误的时间点实现数据恢复

在错误时间点停止,在下一个正确时间点开始

6.2.2 MySQL 增量备份

二进制日志中需要关注的部分

1、at :开始的位置点

2、end_log_pos:结束的位置

3、时间戳: 210712 11:50:30

4、SQL语句

6.2.3 MySQL增量恢复

1.一般恢复

2.断点恢复

相关推荐
cqsztech1 小时前
如何打造一个非CDB的Oracle 19c docker 镜像
数据库·docker·oracle
w***15311 小时前
【MySQL数据库】Ubuntu下的mysql
数据库·mysql·ubuntu
零日失眠者1 小时前
【Oracle入门到删库跑路-02】基础入门:Oracle安装与配置
数据库·oracle
马克学长1 小时前
SSM社区志愿者服务系统d6d36(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm框架·社区志愿服务
cqsztech1 小时前
oracle linux 9.6上安装oracle database 19.3 标准版 docker
linux·数据库·oracle
遇见火星1 小时前
MySQL 性能优化
数据库·mysql·性能优化
safestar20121 小时前
数据到底存在了哪儿?——拆解MySQL的存储引擎与一致性实现
数据库·mysql
kwg1261 小时前
Dify二次开发-AI 应用端反馈指令接收(AI 应用端 → Dify)
前端·数据库·人工智能