首页/数据/数据库速查/mysqldump 全库逻辑备份
备份与恢复56 条

mysqldump 全库逻辑备份

官方逻辑备份工具基础用法:把所有库的建表语句与数据导出为 SQL 文本,官方自带、跨版本迁移方便,是中小数据量场景的首选。

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

mysqldump 全库备份

mysqldump 是 MySQL 自带的逻辑备份工具,把库表结构与数据导出成可读的 SQL 文本:官方随发行版提供、无需额外部署,跨版本与跨平台迁移都方便,适合中小数据量。全库备份用 --all-databases 一次导出所有库。它是单线程工作,速度受磁盘与网络限制,数据量到几百 GB 时导出与恢复的耗时都难以估量,那种规模就该考虑物理备份。

基本信息

用途把所有库的结构与数据导出为 SQL 文本
语法mysqldump -u 用户 -p --all-databases > all.sql
推荐组合--single-transaction --source-data=2 --routines --events --triggers
适用数据量中小库,几十 GB 以内较舒适
线程模型单线程导出,速度受 IO 限制
输出性质明文 SQL,包含全量业务数据

典型使用场景

  • 版本升级前的兜底备份,逻辑备份可跨版本导入
  • 整实例搬移:小库迁到新实例,导出再导入最直接
  • 结构留档:定期导出表结构,用于比对变更
  • 脱敏取样:导出后替换敏感字段再导入测试环境
  • 缺少专业备份工具时的兜底方案
  • 单表或单库修复:只导出受影响对象做定点恢复

标准全备

标准全备
mysqldump -uroot -p --all-databases --single-transaction \
  --source-data=2 --routines --events --triggers \
  --default-character-set=utf8mb4 \
  > /data/backup/all_$(date +%F_%H%M).sql   # 文件名带时间戳,避免覆盖旧备份
ls -lh /data/backup/all_*.sql   # 核对文件大小与生成时间是否正常

常用参数速记

常用参数速记
--all-databases 导出所有库          --databases db1 db2 指定多个库
--single-transaction 一致性快照    --quick 逐行读取,避免占内存
--routines --events --triggers 导出存储程序与触发器
--source-data=2 记录位点并写入文件注释
--no-data 只导结构                 --ignore-table=db.tbl 排除指定表

关键参数对照

参数作用使用建议
--all-databases导出所有库的结构与数据整实例备份场景
--databases导出指定库并写入建库语句按库备份首选,恢复时可自动建库
--single-transaction开启一致性快照,不锁表InnoDB 必备
--quick逐行读取不缓存整表大表必备,防止客户端内存被吃满
--routines --events --triggers导出存储过程、事件与触发器默认不导,遗漏会导致恢复后功能缺失
--source-data=2把位点以注释写入文件为后续搭建复制提供位点
--set-gtid-purged控制是否写入 GTID 信息导入从库前要评估该开关
默认导出会逐表加读锁;InnoDB 表必须配合一致性快照选项才能拿到同一时间点的数据视图,否则导出期间的写入会造成表间数据错位。
大库全备耗时长、吃 IO,应避开业务高峰执行;动手前先估算备份体积与剩余磁盘空间,确认落盘目录有足够容量再开始。
备份文件是明文 SQL,包含全量业务数据,存放目录必须限权,跨网络传输要考虑加密,也不要放在可被外部访问的路径下。

全备执行检查清单

  • 确认剩余磁盘空间大于预估备份体积的两倍
  • 确认是否混有非事务引擎表,必要时单独安排
  • 备份命令与参数固化进脚本,避免每次临时拼装
  • 备份完成后核对文件大小与结束时间
  • 周期性做恢复演练,只备份不演练等于没有备份
  • 保留一份异地副本,避免与主库同盘同机房
备份脚本要有人看结果:文件大小异常偏小、导出过程报错中断都会留下一个看起来正常但实际不完整的文件,脚本应对退出码与文件体积做校验并告警。

易错点

  • 用全库导出替代物理备份:数据量上去后导出与恢复耗时不可控,恢复窗口反而被拉长
  • 备份文件与数据库放在同一块盘:磁盘故障时数据与备份一起丢,应异地或至少换设备保存
  • 导出时漏掉存储程序与触发器:恢复后业务依赖的过程不存在,出现功能缺失还误判为数据问题
  • 长期只备份不校验不演练:文件可能早已损坏或权限错误,真正需要恢复时才发现不可用
  • 备份文件权限过宽:明文包含全部业务数据,目录可被其他账号读取等同于数据泄露

数据来源与参考

  • MySQL 8.0 Reference Manual: mysqldump

相关工具

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