当前位置: 首页 > article >正文

MySQL 数据库备份与恢复利器:Percona XtraBackup 详解

一、XtraBackup 简介

1. 什么是 XtraBackup?

XtraBackup 是 Percona 公司推出的免费开源工具,专为 InnoDB/XtraDB 引擎设计,支持 在线物理热备,具备以下核心特性:

  • 非阻塞备份:备份过程中数据库仍可读写。

  • 增量备份:仅备份自上次备份以来的变化数据,节省存储空间。

  • 快速恢复:通过事务日志(Redo Log)保证数据一致性。

2. 适用场景

  • 数据量超过 50GB,需高效备份与恢复。

  • 业务要求 24/7 高可用,无法接受停机备份。

  • 需要灵活的备份策略(如每周全备 + 每日增量备份)。


二、安装 XtraBackup

1. 环境要求

  • MySQL 版本

    • XtraBackup 2.4 → 支持 MySQL 5.6/5.7

    • XtraBackup 8.0 → 支持 MySQL 8.0

    • XtraBackup 8.1 → 支持 MySQL 8.1

2. 安装步骤(以 CentOS 为例)

# 添加 Percona YUM 仓库
sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm# 启用 XtraBackup 8.0 仓库
sudo percona-release setup ps80# 安装依赖与 XtraBackup
sudo yum install epel-release
sudo yum update
sudo yum install percona-xtrabackup-80

三、全量备份与恢复

1. 全量备份流程

步骤 1:创建备份用户
CREATE USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Root123.';
GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT, BACKUP_ADMIN, SELECT ON *.* TO 'admin'@'localhost';
FLUSH PRIVILEGES;
步骤 2:执行全量备份
xtrabackup --user=admin --password=Root123. --backup --target-dir=/full_xtrabackup
步骤 3:预备备份(应用 Redo Log)
xtrabackup --prepare --target-dir=/full_xtrabackup

2. 数据恢复

# 停止 MySQL 并清空数据目录
systemctl stop mysqld
rm -rf /var/lib/mysql/*# 恢复数据
xtrabackup --copy-back --target-dir=/full_xtrabackup# 修复权限并重启
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld

四、增量备份与恢复

1. 增量备份原理

  • 基于 LSN(Log Sequence Number):仅备份自上次备份后变化的页面。

  • 依赖全量备份:增量备份必须基于一个完整的全量备份。

2. 操作示例

步骤 1:全量备份
xtrabackup --user=admin --password=Root123. --backup --target-dir=/backup/full
步骤 2:第一次增量备份
xtrabackup --user=admin --password=Root123. --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/full
步骤 3:合并增量到全量备份
# 预备全量备份
xtrabackup --prepare --apply-log-only --target-dir=/backup/full# 合并第一次增量
xtrabackup --prepare --apply-log-only --target-dir=/backup/full --incremental-dir=/backup/inc1# 最终准备(应用所有日志)
xtrabackup --prepare --target-dir=/backup/full
步骤 4:恢复数据
xtrabackup --copy-back --target-dir=/backup/full

五、XtraBackup 的优缺点

优点

  1. 热备份:InnoDB 表备份无需锁表。

  2. 增量备份:大幅减少备份时间和存储占用。

  3. 流式压缩:支持 --stream 参数直接压缩传输。

  4. 快速恢复:通过 Redo Log 保证数据一致性。

缺点

  1. MyISAM 表限制:备份 MyISAM 表时需全局锁,可能影响主从同步。

  2. 版本兼容性:不同 MySQL 版本需匹配对应的 XtraBackup 版本。

http://www.lryc.cn/news/2396331.html

相关文章:

  • 【GlobalMapper精品教程】095:如何获取无人机照片的拍摄方位角
  • 小提琴图绘制-Graph prism
  • 写作即是生活
  • 进阶知识:Selenium底层原理深度解析
  • 基于 Flickr30k-Entities 数据集 的 Phrase Localization
  • [GHCTF 2025]SQL???
  • 【科研绘图系列】R语言绘制GO term 富集分析图(enrichment barplot)
  • JavaScript 性能优化实战指南
  • 达梦数据库:同1台服务器如何启动不同版本的DMAP服务
  • Laravel单元测试使用示例
  • Kotlin委托机制使用方式和原理
  • 鸿蒙OSUniApp集成WebAssembly实现高性能计算:从入门到实践#三方框架 #Uniapp
  • 基于 HT for Web 轻量化 3D 数字孪生数据中心解决方案
  • 精英-探索双群协同优化(Elite-Exploration Dual Swarm Cooperative Optimization, EEDSCO)
  • 解决Ubuntu20.04上Qt串口通信 QSerialPort 打开失败的问题
  • 深入浅出:使用DeepSeek开发小程序的完整指南
  • 设计模式——观察者设计模式(行为型)
  • 【前端】Vue中使用CKeditor作为富文本编辑器
  • CSS篇-6
  • 【计算机系统结构】习题2
  • 用户资产化视角下开源AI智能名片链动2+1模式S2B2C商城小程序的应用研究
  • day023-面试题总结
  • 机器学习实验七--SVM垃圾邮件分类器
  • C++23 std::fstreams基础回顾
  • Git初识Git安装
  • 使用Redisson实现分布式锁发现的【订阅超时】Subscribe timeout: (7500ms)
  • 数据分析的方法总结
  • 如何使用 poetry 创建虚拟环境,VSCode 如何激活使用 Poetry 虚拟环境(VSCode如何配置 Poetry 虚拟环境)
  • 每天掌握一个Linux命令 - ps
  • 牛客小白月赛117