全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-15 6 分钟 ✍️ juanwangdev

MySQL 逻辑备份与物理备份

备份方式分为逻辑备份和物理备份,两者在备份速度、恢复效率、可移植性方面各有特点。

两种备份方式对比

维度逻辑备份物理备份
备份内容SQL语句、数据文本数据库文件
备份速度较慢较快
恢复速度较慢(需执行SQL)较快(直接复制)
可移植性高(跨平台)低(依赖平台)
灵活性可选择性备份表备份整个库
工具mysqldump、mydumpercp、xtrabackup

逻辑备份

SQL
-- mysqldump 逻辑备份
mysqldump -u root -p db_name > db_backup.sql

-- 备份单个表
mysqldump -u root -p db_name table_name > table_backup.sql

-- 备份多个数据库
mysqldump -u root -p --databases db1 db2 > dbs_backup.sql

-- 备份所有数据库
mysqldump -u root -p --all-databases > all_backup.sql

-- 备份表结构不含数据
mysqldump -u root -p --no-data db_name > schema.sql

-- 备份数据不含表结构
mysqldump -u root -p --no-create-info db_name > data.sql

逻辑恢复

SQL
-- 恢复数据库
mysql -u root -p db_name < db_backup.sql

-- 恢复所有数据库
mysql -u root -p < all_backup.sql

-- 在MySQL内恢复
mysql> SOURCE /path/to/backup.sql;

物理备份

冷备份(停服务)

Bash
# 1. 停止MySQL服务
systemctl stop mysql

# 2. 复制数据目录
cp -r /var/lib/mysql /backup/mysql_20240115

# 3. 启动MySQL服务
systemctl start mysql

热备份(服务运行)

Bash
# 使用 xtrabackup(InnoDB热备份)
# 安装
yum install percona-xtrabackup

# 全量备份
xtrabackup --backup --target-dir=/backup/full

# 准备备份(使数据一致)
xtrabackup --prepare --target-dir=/backup/full

# 恢复
xtrabackup --copy-back --target-dir=/backup/full

物理恢复

Bash
# 1. 停止服务
systemctl stop mysql

# 2. 清空数据目录(谨慎操作)
rm -rf /var/lib/mysql/*

# 3. 复制备份文件
cp -r /backup/mysql_20240115 /var/lib/mysql

# 4. 设置权限
chown -R mysql:mysql /var/lib/mysql

# 5. 启动服务
systemctl start mysql

选择建议

SQL
-- 小数据库(<10GB):逻辑备份
mysqldump -u root -p db > backup.sql

-- 大数据库(>10GB):物理备份
xtrabackup --backup --target-dir=/backup/full

-- 需跨平台迁移:逻辑备份
mysqldump -u root -p db > backup.sql

-- 快速恢复场景:物理备份
xtrabackup --copy-back --target-dir=/backup/full

生产环境推荐使用 xtrabackup 进行热物理备份。

要点总结

  • 逻辑备份导出SQL,恢复需执行SQL,速度慢但灵活
  • 物理备份复制文件,恢复直接复制,速度快
  • 小库用mysqldump,大库用xtrabackup
  • 物理备份依赖平台和MySQL版本,迁移需注意

📝 发现内容有误?点击此处直接编辑

← 上一篇 MySQL 恢复策略与实战
下一篇 → Buffer Pool与LRU算法
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库