首页/数据/数据库速查/逻辑备份与物理备份选型对比
备份与恢复56 条

逻辑备份与物理备份选型对比

逻辑备份(mysqldump/mydumper)产出 SQL 文本、跨版本友好但慢;物理备份(xtrabackup)直接拷贝文件、快但绑定版本与文件格式。选型看规模与恢复目标。

数据库速查数据更新于 2026-10-13

两类备份怎么选

逻辑备份(mysqldump、mydumper)把数据导出成 SQL 文本,跨版本友好、可读可改,但导出慢、恢复更慢;物理备份(Percona XtraBackup)直接拷贝数据文件,快且能增量,但绑定大版本与文件格式,单表恢复受限。选型的依据是数据规模、恢复时间目标与是否需要跨版本搬运。

对比与选型依据

维度逻辑备份物理备份
速度慢,导出与导入都是逐行 SQL快,文件级拷贝,支持增量
跨版本较友好,注意语法与排序规则差异绑定大版本与厂商,跨版本基本不可用
粒度库、表、甚至条件导出都灵活以实例与库为主,单表恢复限制多
产物SQL 文本,可读可改可审阅二进制文件,恢复前需 prepare
体积文本较大,压缩后可用与原数据接近,压缩率高
典型工具mysqldump、mydumper、mysqlpumpXtraBackup、企业版 ME 备份

组合策略

组合策略
# 日常:物理全备 + binlog 归档,快且支持时间点恢复
xtrabackup --backup --target-dir=/data/backup/full_$(date +%F) --user=root --password=***  # 物理全备
xtrabackup --prepare --target-dir=/data/backup/full_$(date +%F)                            # 恢复前必须 prepare
# 长期归档:每周一份逻辑备份,跨版本可读、便于异地保存
mysqldump -uroot -p --single-transaction --routines --events --all-databases | gzip -6 > /data/archive/weekly_$(date +%F).sql.gz
mysql -uroot -p -e 'SHOW BINARY LOGS;' > /data/archive/binlog_list_$(date +%F).txt   # 留存归档时的 binlog 清单
# 小表级恢复:逻辑备份更方便,直接抽单表导入
zcat /data/archive/weekly_2026-10-01.sql.gz | sed -n '/CREATE TABLE `t_order`/,/^UNLOCK/p' > t_order.sql

典型使用场景

  • TB 级库的日常容灾,用物理全备加增量把恢复时间压到可接受范围
  • 跨大版本迁移(5.7 到 8.0),用逻辑备份搬运数据,再由物理备份兜底
  • 单表误删,用逻辑备份抽表恢复,避免整实例回滚
  • 长期归档与审计,用 SQL 文本产物便于人工审阅与异地保存
  • 小库或测试环境,直接用逻辑备份省去 prepare 步骤
两套并行不冲突:物理备份用于快速恢复与 PITR,逻辑备份用于长期归档、跨版本搬运与精细到表的选择性恢复。
只做逻辑备份的 TB 级库,恢复窗口往往不可接受;只做物理备份的库,跨大版本迁移时会卡住,必须有逻辑导出兜底。

易错点

  • 只做逻辑备份:数据量上来后恢复要数小时甚至更久,RTO 目标无法实现
  • 只做物理备份:跨大版本迁移与单表恢复都受限,仍需逻辑导出作为补充手段
  • 物理备份忘记 prepare 或 prepare 未在最新备份上执行:恢复时报日志不一致或直接起不来
  • 归档产物与 binlog 清单不配套:需要 PITR 时找不到对应位点,只能恢复到最近全备

数据来源与参考

  • MySQL 8.0 Reference Manual: Backup and Recovery 概述
  • Percona XtraBackup 文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌