MySQL全量、增量备份与恢复

目录

数据备份

一、数据备份类型

 二、常见备份方法

扩展: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 TOMASTER_HOST='master_host',MASTER_AUTO_POSITION=1; 

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

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

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

相关文章

木马查杀篇—Opcode提取

【前言】 介绍Opcode的提取方法,并探讨多种机器学习算法在Webshell检测中的应用,理解如何在实际项目中应用Opcode进行高效的Webshell检测。 Ⅰ 基本概念 Opcode:计算机指令的一部分,也叫字节码,一个php文件可以抽取出…

DeepSeek-R1-Distill-Qwen-1.5B代表什么含义?

DeepSeek‑R1‑Distill‑Qwen‑1.5B 完整释义与合规须知 一句话先行 这是 DeepSeek‑AI 把自家 R1 大模型 的知识,通过蒸馏压缩进一套 Qwen‑1.5B 架构 的轻量学生网络,并以宽松开源许可证发布的模型权重。 1 | 名字逐段拆解 片段意义备注DeepSee…

Megatron系列——张量并行

本文整理自bilibili Zomi视频 1、行切分和列切分 注意: (1)A按列切分时,X无需切分,split复制广播到A1和A2对应设备即可。最后Y1和Y2需要拼接下,即All Gather (2)A按行切分时&#…

java agent技术

从JDK1.5之后引入了java angent技术 Java Agent 是一种强大的技术,它允许开发者在 JVM 启动时或运行期间动态地修改类的字节码,从而实现诸如性能监控、日志记录、AOP(面向切面编程)等功能 java agent依赖于Instrumentation API&…

LLaMA Factory 深度调参

注意,本文涵盖从基础调参到前沿研究的完整知识体系,建议结合具体业务场景灵活应用。一篇“参考文献”而非“可运行的代码”。https://github.com/zysNLP/quickllm 初始指令: llamafactory-cli train \--stage sft \--do_train True \--mode…

Linux驱动:驱动编译流程了解

要求 1、开发板中的linux的zImage必须是自己编译的 2、内核源码树,其实就是一个经过了配置编译之后的内核源码。 3、nfs挂载的rootfs,主机ubuntu中必须搭建一个nfs服务器。 内核源码树 解压 tar -jxvf x210kernel.tar.bz2 编译 make x210ii_qt_defconfigmakeCan’t use ‘…

Redis集群模式、持久化、过期策略、淘汰策略、缓存穿透雪崩击穿问题

Redis四种模式 单节点模式 架构​​:单个Redis实例运行在单台服务器。 ​​优点​​: ​​简单​​:部署和配置容易,适合开发和测试。 ​​低延迟​​:无网络通信开销。 ​​缺点​​: ​​单点故障​​&…

1.2 函数

函数的本质是描述变量间的依赖关系:​​一个变量(自变量)的变化会唯一确定另一个变量(因变量)的值​​。 ​​基本构成​​:通过符号(如YF(X))表达规则,X输入 → F处理 …

2025数字孪生技术全景洞察:从工业革命到智慧城市的跨越式发展

引言 数字孪生技术,这一融合物理世界与虚拟镜像的革新性工具,正以惊人的速度重塑产业格局。2025年,中国数字孪生市场规模预计达214亿元,工业制造领域占比超40%,其技术深度与行业落地成果令人瞩目。本文将结合最新数据与…

RabbitMQ 工作模式

RabbitMQ 一共有 7 中工作模式,可以先去官网上了解一下(一下截图均来自官网):RabbitMQ 官网 Simple P:生产者,要发送消息的程序;C:消费者,消息的接受者;hell…

VBA会被Python代替吗

VBA不会完全被Python取代、但Python在自动化、数据分析与跨平台开发等方面的优势使其越来越受欢迎、两者将长期并存且各具优势。 Python以其易于学习的语法、强大的开源生态系统和跨平台支持,逐渐成为自动化和数据分析领域的主流工具。然而,VBA依旧在Exc…

【开源工具】深度解析:基于PyQt6的Windows时间校时同步工具开发全攻略

🕒 【开源工具】深度解析:基于PyQt6的Windows时间校时同步工具开发全攻略 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热…

大模型项目:普通蓝牙音响接入DeepSeek,解锁语音交互新玩法

本文附带视频讲解 【代码宇宙019】技术方案:蓝牙音响接入DeepSeek,解锁语音交互新玩法_哔哩哔哩_bilibili 目录 效果演示 核心逻辑 技术实现 大模型对话(技术: LangChain4j 接入 DeepSeek) 语音识别(…

qt命名空间演示

#ifndef CIR_H #define CIR_Hnamespace cir {double PI3.141592653;//获取圆行周长double getLenthOfCircle(double radius){return 2*PI*radius;}//获取圆形面积double getAreaOfCircle(double radius){return PI*radius*radius;}} #endif // CIR_H#include <iostream> …

使用 Java 反射动态加载和操作类

Java 的反射机制(Reflection)是 Java 语言的一大特色,它允许程序在运行时检查、加载和操作类、方法、字段等元信息。通过 java.lang.Class 和 java.lang.reflect 包,开发者可以动态加载类、创建实例、调用方法,甚至在运行时构造新类。反射是 Java 灵活性的核心,广泛应用于…

《 C++ 点滴漫谈: 三十七 》左值?右值?完美转发?C++ 引用的真相超乎你想象!

摘要 本文全面系统地讲解了 C 中的引用机制&#xff0c;涵盖左值引用、右值引用、引用折叠、完美转发等核心概念&#xff0c;并深入探讨其底层实现原理及工程实践应用。通过详细的示例与对比&#xff0c;读者不仅能掌握引用的语法规则和使用技巧&#xff0c;还能理解引用在性能…

【AutoGen深度解析】下一代AI代理编程框架实战指南

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1f6a7; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f50d; 一、技术原理剖析&#x1f5bc;️ 核心概念图解&#x1f4a1; 核心作用讲解⚙️ 关键技术模块说明&#x1f504; 技术…

Python-AI调用大模型 给出大模型人格案例

Python调用通义千问模拟原神雷电将军口吻 最近在用AI编辑器写AI对话 尝试给AI对话增加人格 以下是使用阿里通义千问大模型模拟《原神》中雷电将军(雷电影)口吻的代码案例&#xff0c;包含典型的高傲威严、略带古风的说话风格。 完整后端代码示例 import dashscope from dash…

csdn博客打赏功能

CSDN_专业开发者社区_已接入DeepSeekR1满血版 官网: 最右下角 耳机 就是客服 可以转人工 开启打赏功能如下: 1.因为博主本人不可以对本人账号文章进行打赏&#xff0c;因此本人账号打开文章详情页不显示打赏按钮。为了验证账号设置的打赏功能是否生效所以让您使用无痕模式模…

【深度学习】目标检测算法大全

目录 一、R-CNN 1、R-CNN概述 2、R-CNN 模型总体流程 3、核心模块详解 &#xff08;1&#xff09;候选框生成&#xff08;Selective Search&#xff09; &#xff08;2&#xff09;深度特征提取与微调 2.1 特征提取 2.2 网络微调&#xff08;Fine-tuning&#xff09; …