MySQL mysqldump与XtraBackup全量、增量备份完整

举报
yd_254543518 发表于 2026/07/20 20:54:24 2026/07/20
【摘要】 一、核心对比:mysqldump vs XtraBackup1.2 适用场景(生产选型核心)mysqldump 适用场景小体量数据库(10G以内)、测试环境、个人学习环境备份需要跨版本、跨平台迁移(SQL文件通用性极强)需要精准备份单库、单表、指定数据的场景临时导出数据、数据核对、离线归档场景缺点致命:大库禁用,备份耗时久、恢复慢,无原生增量,无法满足生产高频备份需求XtraBackup 适...

一、核心对比:mysqldump vs XtraBackup

1.2 适用场景(生产选型核心)

mysqldump 适用场景

  • 小体量数据库(10G以内)、测试环境、个人学习环境备份
  • 需要跨版本、跨平台迁移(SQL文件通用性极强)
  • 需要精准备份单库、单表、指定数据的场景
  • 临时导出数据、数据核对、离线归档场景
缺点致命:大库禁用,备份耗时久、恢复慢,无原生增量,无法满足生产高频备份需求

XtraBackup 适用场景

  • 生产环境中大型InnoDB数据库(10G以上、百G、TB级)
  • 业务7*24小时不停机,需要无锁热备的核心业务
  • 需要每日全量+每小时增量高频备份的场景
  • 故障快速恢复场景,要求RTO(恢复时间)极短
核心优势:不影响业务、支持增量、备份恢复效率碾压mysqldump,是生产标准备份方案

二、mysqldump 全量备份 + 增量备份(binlog)完整实操

前置条件:MySQL开启binlog日志(生产默认开启),记录binlog日志路径

2.1 mysqldump 无锁全量备份(InnoDB专属)

核心参数说明

  • --single-transaction:InnoDB快照备份,全程无锁,不阻塞业务
  • --master-data=2:记录备份时刻binlog文件名、位置(增量恢复关键)
  • --flush-logs:刷新binlog,生成新日志文件,拆分备份前后日志
  • -q:快速导出,提升备份速度

全量备份命令(生产通用)

# 全库全量备份 mysqldump -uroot -p \ --single-transaction \ --master-data=2 \ --flush-logs \ --all-databases \ --quick \ --default-character-set=utf8mb4 \ > /data/backup/mysql_full_$(date +%F).sql # 单库全量备份(推荐业务使用) mysqldump -uroot -p \ --single-transaction \ --master-data=2 \ --flush-logs \ --quick \ --default-character-set=utf8mb4 \ test_db > /data/backup/testdb_full_$(date +%F).sql

2.2 mysqldump 增量备份(依赖binlog)

mysqldump无原生增量,增量备份本质是:全量备份后,截取新增binlog日志

操作步骤

  1. 查看全量备份SQL文件,获取备份起始binlog位置 grep -i "change master" /data/backup/testdb_full_2025-08-01.sql 输出示例:CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000123', MASTER_LOG_POS=156;
  2. 增量备份:导出该位置之后的所有binlog日志 mysqlbinlog --start-position=156 /var/lib/mysql/mysql-bin.000123 > /data/backup/mysql_inc_$(date +%F_%H%M).sql

2.3 mysqldump 备份恢复流程

  1. 停止业务,清空故障数据库(避免数据冲突)
  2. 恢复全量备份文件 mysql -uroot -p < /data/backup/testdb_full_2025-08-01.sql
  3. 恢复增量binlog日志(补全全量备份后新增数据) mysql -uroot -p < /data/backup/mysql_inc_2025-08-01_1400.sql
  4. 校验数据,重启业务

三、XtraBackup 全量备份 + 增量备份完整实操

前置条件:安装 percona-xtrabackup 工具、MySQL InnoDB引擎、知晓数据库数据目录
工具说明:8.0版本用 xbkup,5.7版本用 innobackupex,下文以生产主流 2.4/8.0 通用语法为例

3.1 XtraBackup 全量备份(热备、无锁)

1. 执行全量备份命令

# 创建备份目录 mkdir -p /data/xtrabackup/full # 全量备份(自动适配MySQL,无锁热备) innobackupex --user=root --password=你的密码 /data/xtrabackup/full/ --no-timestamp
备份成功后,目录下会生成完整的数据库物理文件(ibd、frm、日志文件等)

2. 备份预处理(必须步骤!恢复必备)

作用:统一日志位点、回滚未提交事务、同步数据文件与日志,保证备份可用
innobackupex --apply-log /data/xtrabackup/full/

3.2 XtraBackup 增量备份(核心优势)

增量备份原理:对比上一次备份位点,只备份新增/修改的数据页,体积小、速度快

1. 第一次增量备份(基于全量备份)

mkdir -p /data/xtrabackup/inc1 # --incremental-basedir:指定上一次全量备份目录 innobackupex --user=root --password=你的密码 \ --incremental /data/xtrabackup/inc1 \ --incremental-basedir=/data/xtrabackup/full/ \ --no-timestamp

2. 第二次增量备份(基于上一次增量备份)

mkdir -p /data/xtrabackup/inc2 # 基于上一轮增量备份,持续叠加增量数据 innobackupex --user=root --password=你的密码 \ --incremental /data/xtrabackup/inc2 \ --incremental-basedir=/data/xtrabackup/inc1/ \ --no-timestamp

3. 增量备份预处理(分层合并,关键步骤)

规则:全量备份先apply,增量依次叠加合并,最后整体apply
# 1. 全量备份预处理(仅回滚未提交,不完成最终同步) innobackupex --apply-log --redo-only /data/xtrabackup/full/ # 2. 合并第一次增量到全量 innobackupex --apply-log /data/xtrabackup/full/ --incremental-dir=/data/xtrabackup/inc1/ # 3. 合并第二次增量到全量 innobackupex --apply-log /data/xtrabackup/full/ --incremental-dir=/data/xtrabackup/inc2/ # 4. 最终整体预处理,完成数据一致性同步 innobackupex --apply-log /data/xtrabackup/full/

3.3 XtraBackup 完整恢复步骤(生产标准)

注意:物理恢复会覆盖所有原数据,操作前务必确认!
  1. 停止MySQL服务 systemctl stop mysqld
  2. 清空原数据库数据目录(避免文件冲突) rm -rf /var/lib/mysql/*
  3. 执行物理恢复(拷贝备份文件到数据目录) innobackupex --copy-back /data/xtrabackup/full/
  4. 修复文件权限(必须!否则MySQL启动失败) chown -R mysql:mysql /var/lib/mysql
  5. 启动MySQL服务,校验数据 systemctl start mysqld

四、生产备份策略推荐(落地方案)

1. 小型业务/测试库(mysqldump)

  • 每日凌晨1点:mysqldump全量备份
  • 开启binlog,保留7天日志,用于任意时间点恢复

2. 中大型生产库(XtraBackup)

  • 每周日凌晨:XtraBackup 全量备份
  • 周一至周六:每4小时 增量备份
  • 备份文件异地存储、定期校验备份可用性

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。