MySQL全量、增量备份与恢复

news2025/5/13 10:08:58

目录

数据备份

一、数据备份类型

 二、常见备份方法

扩展:GTID与XtraBackup

‌一、GTID(全局事务标识符)‌

‌1. 定义与核心作用‌

‌2. GTID在备份恢复中的意义‌

‌3. GTID配置与启用‌

‌二、XtraBackup的意义与核心价值‌

‌1. 定义与定位‌

‌2. 核心功能与优势‌

‌3. 适用场景‌

‌三、XtraBackup部署与使用‌

‌1. 环境准备与安装‌

‌2. 全量备份与恢复‌

‌3. 增量备份与恢复‌

‌4. 备份压缩与流式传输‌

‌四、GTID与XtraBackup的协同应用‌

‌1. 备份时记录GTID信息‌

‌2. 基于GTID的复制恢复‌

‌五、对比总结‌


数据备份

一、数据备份类型

1、物理与逻辑角度

    数据库备份类型可以分为物理备份逻辑备份

    物理备份就是对数据库操作系统物理文件(如数据文件,日志文件)的备份。适用于需要快速恢复的大型重要数据库。物理备份又可分为冷备份(脱机备份)、热备份(联机备份)、温备份

  • 冷备份:在数据库关闭下及逆行进行备份操作;
  • 热备份:在数据库处于运行状态下进行备份操作,依赖于数据库的日志文件;
  • 温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作。

    逻辑备份就是对数据库逻辑组件(如表等数据库对象)的备份,表示为逻辑数据库结构(CREATE DATABASE,CREATE TABLE语句)和内容(INSERT语句或分隔文本文件)的信息。这种类型的备份使用于可以编辑数据值或表结构较小的数据量,或在不同的机器体系结构上重新创建数据。

2、策略角度

    可以分为完全备份、差异备份增量备份


完全备份 (Full Backup)

定义

  • 完全备份‌是对选定数据(如整个系统、数据库或文件目录)的完整复制,每次备份时都会保存所有数据的最新状态,无论数据是否被修改过。

流程

  1. 首次备份时,完整复制所有数据。
  2. 后续每次备份仍会重新复制所有数据,即使只有少量变化。

优点

  • 恢复简单‌:只需最近一次完全备份即可恢复所有数据。
  • 独立性强‌:每个完全备份是独立的,不依赖其他备份。
  • 版本清晰‌:每次备份代表一个完整的时间点快照。

缺点

  • 存储消耗大‌:每次备份占用空间与原始数据量相当。
  • 备份时间长‌:数据量大时,备份耗时较高。
  • 带宽占用高‌:不适合频繁备份。

适用场景

  • 首次备份或基线备份。
  • 定期低频备份(如每周一次)。
  • 关键系统或小数据集(如数据库核心文件)。

差异备份 (Differential Backup)

定义

  • 差异备份‌记录自‌最近一次完全备份以来所有变化的数据‌。每次差异备份的内容会逐渐累积,直到下一次完全备份重置基准。

流程

  1. 假设周一执行完全备份。
  2. 周二差异备份:保存周一后所有变化。
  3. 周三差异备份:保存周一后所有变化(包含周二和周三的变化)。
  4. 周四差异备份:保存周一后所有变化(累积到周四)。
  5. 重复直到下一次完全备份。

优点

  • 恢复效率较高‌:恢复时只需最近一次完全备份 + 最新差异备份。
  • 存储占用可控‌:比完全备份节省空间,但随着时间推移差异备份会逐渐增大。
  • 备份速度较快‌:仅备份增量数据。

‌‌缺点

  • 存储压力随时间增加‌:随着距离上次完全备份的时间增加,差异备份规模可能接近完全备份。
  • 依赖完全备份‌:若完全备份损坏,后续差异备份失效。

用场景

  • 需要平衡备份频率和恢复速度的场景。
  • 中小型数据量,且完全备份间隔较短(如每周完全备份 + 每日差异备份)。

增量备份 (Incremental Backup)

‌‌定义

  • 增量备份‌仅记录自‌上一次备份(无论完全备份还是增量备份)以来的变化数据‌。每次备份仅包含最新改动,形成一个备份链。

流程

  1. 周一执行完全备份。
  2. 周二增量备份:仅保存周一后的变化。
  3. 周三增量备份:仅保存周二后的变化。
  4. 周四增量备份:仅保存周三后的变化。
  5. 恢复时需完全备份 + 所有后续增量备份。

优点

  • 存储占用最小‌:每次仅备份少量新增或修改的数据。
  • 备份速度最快‌:适合高频备份(如每天多次)。
  • 带宽优化‌:适合远程备份或云备份。

缺点

  • 恢复复杂度高‌:需按顺序合并所有增量备份,恢复时间可能较长。
  • 依赖链风险高‌:若链中某个备份损坏,后续备份可能无法恢复。
  • 管理复杂‌:需维护完整的备份链。

适用场景

  • 数据量大且变化较少的场景(如文档存储)。
  • 需要高频备份的场景(如每小时备份一次)。

对比总结

维度完全备份差异备份增量备份
存储占用最大中等(随时间增长)最小
备份速度较快最快
恢复速度最快(一步到位)较快(两步恢复)慢(依赖备份链)
恢复复杂度
数据安全性高(独立备份)中(依赖完全备份)低(依赖备份链完整性)
适用频率低频(如每周)中频(如每日)高频(如每小时)

组合策略建议

  • 完全备份 + 增量备份

    • 示例‌:每周日完全备份,周一至周六增量备份。
    • 优点‌:节省存储和带宽,适合数据量大且变化小的场景。
    • 缺点‌:需妥善管理备份链,恢复步骤多。
  • 完全备份 + 差异备份

    • 示例‌:每周日完全备份,周一至周六差异备份。
    • 优点‌:恢复时仅需两次操作,适合需要快速恢复的中型数据。
    • 缺点‌:差异备份体积逐渐增大。
  • 混合策略

    • 示例‌:完全备份(每周)+ 差异备份(每日)+ 增量备份(每小时)。
    • 适用场景‌:关键系统需要多级容灾(如金融、医疗数据)。

 二、常见备份方法

    MySQL 数据库的备份可以采用很多种方式,如直接打包数据库文件(物理冷备份)、专用备份工具(mysqldump)、二进制日志增量备份、第三方工具备份等。

1、物理冷备份
    物理冷备份时需要在数据库处于关闭状态下,能够较好地保证数据库的完整性。物理冷备份一般用于非核心业务,这类业务一般都允许中断,物理冷备份的特点就是速度快,恢复时也是最为简单的

2、专用备份工具mysql dump或mysqlhotcopy

    mysqldump 程序和 mysqlhotcopy 都可以做备份。mysqldump 是客户端常用逻辑备份程序,能够产生一组被执行以后再现原始数据库对象定义和表数据的SQL 语句。它可以转储一个到多个 MySQL 数据库,对其进行备份或传输到远程SQL 服务器。mysqldump 更为通用,因为它可以备份各种表。mysqlhotcopy 仅适用于某些存储引擎。

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

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

4、第三方工具备份

扩展:GTID与XtraBackup

一、GTID(全局事务标识符)
1. 定义与核心作用
  • GTID(Global Transaction Identifier)‌ 是MySQL 5.6版本引入的全局唯一事务标识机制,格式为 server_uuid:sequence_number,用于唯一标识每个事务。
  • 核心作用‌:
    • 简化主从复制配置,消除传统复制中对二进制日志文件名和位置的依赖。
    • 支持自动故障切换,确保事务在主从节点间的一致性。
    • 实现基于事务的增量恢复,避免手动定位日志偏移量。
2. GTID在备份恢复中的意义
  • 精准恢复‌:通过GTID确定事务边界,支持时间点恢复(PITR)。
  • 复制拓扑管理‌:在不同备份副本间快速重建主从关系,避免数据不一致风险。
3. GTID配置与启用

配置文件(my.cnf)示例‌:

[mysqld] 
gtid_mode = ON 
enforce_gtid_consistency = ON 
server_id = 1 
  • 生效流程‌:
    1. 动态启用GTID(需MySQL重启):
      SET GLOBAL gtid_mode = ON; 
    2. 验证GTID状态:
      SHOW VARIABLES LIKE 'gtid_mode'; 

二、XtraBackup的意义与核心价值
1. 定义与定位
  • XtraBackup‌ 是Percona开发的MySQL物理热备份工具,支持InnoDB/XtraDB引擎,兼容MyISAM表的有限备份。
  • 核心定位‌:
    • 解决逻辑备份(如mysqldump)速度慢的问题,适用于TB级数据场景。
    • 提供在线备份能力,避免业务停机。
2. 核心功能与优势
  • 物理热备份‌:直接复制数据文件,速度显著优于逻辑备份。
  • 增量备份‌:基于LSN(日志序列号)仅备份变化的数据页。
  • 事务一致性‌:通过Redo日志捕获备份期间的变更,确保数据完整性。
  • 压缩与加密‌:减少存储占用,支持TDE(透明数据加密)。
3. 适用场景
  • 大型数据库(如数据量超过100GB)的全量与增量备份。
  • 高可用架构(如主从复制、Galera集群)的数据同步基础。

三、XtraBackup部署与使用
1. 环境准备与安装
  • 版本选择‌:

    • MySQL 5.x 使用 XtraBackup 2.4
    • MySQL 8.0+ 使用 XtraBackup 8.0
  • 安装步骤‌(以CentOS为例)36:

    # 添加Percona仓库 
    yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm 
    
    # 安装XtraBackup 
    yum install percona-xtrabackup-24 
2. 全量备份与恢复

备份命令‌:

xtrabackup --backup --target-dir=/backup/full \ 
           --user=root --password=your_password 

恢复流程‌:

  1. 准备备份数据(应用Redo日志):
    xtrabackup --prepare --target-dir=/backup/full 
  2. 替换原数据目录:
    xtrabackup --copy-back --target-dir=/backup/full 
3. 增量备份与恢复

增量备份命令‌(基于全量备份):

xtrabackup --backup --target-dir=/backup/incr1 \
           --incremental-basedir=/backup/full \
           --user=root --password=your_password 

恢复流程‌:

  1. 合并增量到全量备份:
    xtrabackup --prepare --apply-log-only --target-dir=/backup/full 
    xtrabackup --prepare --target-dir=/backup/full \
               --incremental-dir=/backup/incr1 
  2. 执行最终恢复操作:
    xtrabackup --copy-back --target-dir=/backup/full 
4. 备份压缩与流式传输

压缩备份‌:

xtrabackup --backup --compress --target-dir=/backup/compressed 

流式备份至远程服务器‌5:

xtrabackup --backup --stream=xbstream | ssh user@remote_host "cat - > /backup/stream.xbstream" 

四、GTID与XtraBackup的协同应用
1. 备份时记录GTID信息
  • XtraBackup自动在备份元数据文件 xtrabackup_binlog_info 中记录GTID集合。
  • 查看GTID状态‌:
    cat /backup/full/xtrabackup_binlog_info 
2. 基于GTID的复制恢复

从备份创建从库‌:

  1. 在从库配置文件中启用GTID:
    [mysqld] 
    gtid_mode=ON 
    enforce_gtid_consistency=ON 
  2. 启动从库并设置复制源:
    CHANGE MASTER TO
     MASTER_HOST='master_host',
     MASTER_AUTO_POSITION=1; 

五、对比总结
维度GTIDXtraBackup
核心功能事务全局标识与复制管理物理热备份与快速恢复
数据一致性确保事务在主从节点一致通过Redo日志保证备份一致性
部署复杂度需配置gtid_mode并重启服务安装依赖包,配置备份路径
适用场景主从复制、故障切换大型数据库全量/增量备份
恢复复杂度基于事务自动定位恢复点需合并全量与增量备份
自动化支持支持MASTER_AUTO_POSITION支持脚本自动化定时备份

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2374573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

goner/otel 在Gone框架接入OpenTelemetry

文章目录 背景与意义快速上手:五步集成 OpenTelemetry运行效果展示代码详解与实践目录结构说明组件加载(module.load.go)业务组件示例(your_component.go)程序入口(main.go) 进阶用法与最佳实践…

杨校老师项目之基于SSM与JSP的鲜花销售系统-【成品设计含文档】

基于SSMJSP鲜花商城系统 随着电子商务的快速发展,鲜花在线销售已成为一种重要的消费模式。本文设计并实现了一个基于JSP技术的鲜花销售管理系统,采用B/S架构,使用SSM框架进行开发,并结合Maven进行项目依赖管理。系统分为前台用户模…

springboot集成langchain4j实现票务助手实战

前言 看此篇的前置知识为langchain4j整合springboot,以及springboot集成langchain4j记忆对话。 Function-Calls介绍 langchain4j 中的 Function Calls(函数调用)是一种让大语言模型(LLM)与外部工具(如 A…

Feed流推送之订阅推送

分类 feed流分为TimeLine和智能排序,前者不对内容进行过滤,一般根据发布的时间来进行排序,一般用于好友动态或者推送关注的人的消息,而后者一般有着复杂的算法,可以根据算法智能地向目标用户推送内容,例如…

wordpress自学笔记 第四节 商城菜单的添加和修改美化

wordpress自学笔记 摘自 超详细WordPress搭建独立站商城教程-第四节 商城菜单的添加和修改美化,2025 WordPress搭建独立站商城#WordPress建站教程https://www.bilibili.com/video/BV1UwwgeuEkK?spm_id_from333.788.videopod.sections&vd_sourcea0af3bbc6b6d…

GPU L2 Cache一致性协议对科学计算的影响研究

点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。 一、GPU缓存层级革命:从Volta到Hopper的演进图谱 1.1 架构级缓存策略对比 ‌Vo…

【速写】KV-cache与解码的再探讨(以束搜索实现为例)

文章目录 1 Beam Search 解码算法实现2 实现带KV Cache的Beam Search解码3 关于在带kv-cache的情况下的use_cache参数 1 Beam Search 解码算法实现 下面是一个使用PyTorch实现的beam search解码算法: 几个小细节: 束搜索可以加入length_penalty&#…

(网络)应用层协议-HTTPS

1.HTTPS是什么? HTTPS是应用层的一种协议,是在HTTP的基础上进行了加密层的处理。 HTTP协议的内容都是按照文本的形式进行传输的,所以呢就很容易被别人知道传输的是什么。 我们在了解了TCP/IP之后是知道我们的数据在传输的过程中是通过路由器进…

vue3: pdf.js 3.4.120 using javascript

npm install pdfjs-dist3.4.120 项目结构&#xff1a; pdfjsViewer.vue <template><div><div v-if"loading" class"flex justify-center items-center py-8"><div class"animate-spin rounded-full h-12 w-12 border-b-2 borde…

想实现一个基于MCP的pptx生成系统架构图【初版实现】

技术栈:Python + MCP协议 + python-pptx + FastMCP 核心创新点:通过MCP协议实现PPTX元素的动态化生成与标准化模板管理 当前还是个半成品,后续持续更新。 主要先介绍一下思路。 一、MCP协议与系统设计原理 1.1 为什么选择MCP? 标准化工具调用:通过MCP将PPTX元素生成逻辑封…

PyTorch Lightning实战 - 训练 MNIST 数据集

MNIST with PyTorch Lightning 利用 PyTorch Lightning 训练 MNIST 数据。验证梯度范数、学习率、优化器对训练的影响。 pip show lightning Version: 2.5.1.post0Fast dev run DATASET_DIR"/repos/datasets" python mnist_pl.py --output_grad_norm --fast_dev_run…

力扣2094题解

记录&#xff1a; 2025.5.12 题目&#xff1a; 思路&#xff1a; 暴力遍历。 解题步骤&#xff1a; 1.统计数字出现次数&#xff1a;使用数组cnt来记录输入数组中每个数字的出现次数。 2.生成三位偶数&#xff1a;通过循环从100开始&#xff0c;每次递增2&#xff0c;生成…

DHCP自动分配IP

DHCP自动分配IP 练习1 路由器 Router>en Router#conf t Router(config)#ip dhcp pool ip10 //创建DHCP地址池 Router(dhcp-config)#network 192.168.20.0 255.255.255.0 // 配置网络地址和子网掩码 Router(dhcp-config)#default-router 192.168.20.254 //配置默认网关 Rou…

【CF】Day57——Codeforces Round 955 (Div. 2, with prizes from NEAR!) BCD

B. Collatz Conjecture 题目&#xff1a; 思路&#xff1a; 简单模拟 很简单的模拟&#xff0c;我们只需要快速的找到下一个离 x 最近的 y 的倍数即可&#xff08;要大于 x&#xff09; 这里我们可以这样写 add y - (x % y)&#xff0c;这样就知道如果 x 要变成 y 的倍数还要…

(done) 补充:xv6 的一个用户程序 init 是怎么启动的 ?它如何启动第一个 bash ?

先看 main.c 从函数名来看&#xff0c;比较相关的就 userinit() 和 scheduler() #include "types.h" #include "param.h" #include "memlayout.h" #include "riscv.h" #include "defs.h"volatile static int started 0;//…

超详细讲解C语言转义字符\a \b \r \t \? \n等等

转义字符 C语言有一组字符很特殊&#xff0c;叫做转义字符&#xff0c;顾名思义&#xff0c;改变原来的意思的字符。 1 \? ??)是一个三字母词&#xff0c;在以前的编译器它会被编译为] (??会被编译为[ 因此在以前输入(are you ok ??)就会被编译为are you ok ] 解决这个…

SpringBoot校园失物招领信息平台

SpringBoot校园失物招领信息平台 文章目录 SpringBoot校园失物招领信息平台1、技术栈2、项目说明2.1、登录注册2.2、管理员端截图2.3、用户端截图 3、核心代码实现3.1、前端首页3.2、前端招领广场3.3、后端业务处理 1、技术栈 本项目采用前后端分离的架构&#xff0c;前端和后…

rust 全栈应用框架dioxus server

接上一篇文章dioxus全栈应用框架的基本使用&#xff0c;支持web、desktop、mobile等平台。 可以先查看上一篇文章rust 全栈应用框架dioxus&#x1f448; 既然是全栈框架&#xff0c;那肯定是得有后端服务的&#xff0c;之前创建的服务没有包含后端服务包&#xff0c;我们修改…

西安交大多校联训NOIP1模拟赛题解

西安交大多校联训NOIP1模拟赛题解 T1 秘境形式化题意思路代码&#xff08;丑陋&#xff09; T2 礼物形式化题意思路代码&#xff08;实现&#xff09; T3 小盒子的数论形式化题意思路代码&#xff08;分讨&#xff09; T4 猫猫贴贴(CF997E)形式化题意思路代码&#xff08;深奥&…

数据结构(三)——栈和队列

一、栈和队列的定义和特点 栈&#xff1a;受约束的线性表&#xff0c;只允许栈顶元素入栈和出栈 对栈来说&#xff0c;表尾端称为栈顶&#xff0c;表头端称为栈底&#xff0c;不含元素的空表称为空栈 先进后出&#xff0c;后进先出 队列&#xff1a;受约束的线性表&#xff0…