MySQL 数据库备份与恢复完整教程(mysqldump)
wxk1991 Lv3

MySQL 数据库备份与恢复完整教程(mysqldump)

很多人在:

  • 网站迁移
  • 云服务器迁移
  • 数据备份
  • 数据恢复
  • 数据库升级

时,都需要:

1
备份 MySQL 数据库

或者:

1
恢复 .sql 文件

MySQL 官方最常用的工具:

1
mysqldump

本篇文章教你:

  • 如何备份 MySQL 数据库
  • 如何恢复 SQL 文件
  • 如何导入数据库
  • 如何导出数据库
  • 如何自动备份
  • Linux 常用备份命令

什么是 mysqldump?

mysqldump:

1
是 MySQL 官方提供的数据库备份工具

作用:

  • 导出数据库
  • 导出表结构
  • 导出数据
  • 数据迁移
  • 自动备份

最终会生成:

1
.sql 文件

一、恢复 SQL 文件(导入数据库)

很多时候:

1
别人会给你一个 .sql 文件

例如:

1
1.sql

或者:

1
cms-backup.sql

这时候:

1
需要导入数据库

基础恢复命令

进入:

1
.sql 文件所在目录

然后执行:

1
mysql -u root -p 数据库名 < 文件.sql

示例 1

1
mysql -u root -p pay < db_jucaizf_1688_20230927_160004_2nsMdq.sql

含义:

内容 说明
pay 导入到 pay 数据库
.sql 文件 数据备份文件

示例 2

1
mysql -u cms-collection -p cms-collection < /java/jar/1.sql

含义:

内容 说明
cms-collection 数据库用户名
cms-collection 数据库名
/java/jar/1.sql SQL 文件路径

导入前注意事项

必须:

1
提前创建数据库

否则:

1
会报错

例如:

1
CREATE DATABASE cms;

导入过程中卡住?

正常现象:

1
MySQL 正在导入数据

大型数据库:

1
可能需要几分钟甚至几十分钟

二、备份数据库

MySQL 使用:

1
mysqldump

导出数据库。


基础备份命令

1
mysqldump -u root -p 数据库名 > 文件名.sql

示例

1
mysqldump -u root -p cms > /java/jar/cms-backup.sql

含义:

内容 说明
cms 数据库名
cms-backup.sql 导出的 SQL 文件

为什么推荐 root 权限?

因为:

1
root 权限最完整

否则:

1
某些表可能无法导出

特别是:

  • VIEW
  • TRIGGER
  • EVENT
  • FUNCTION

三、备份所有数据库

执行:

1
mysqldump -u root -p --all-databases > all.sql

作用:

1
导出整个 MySQL

包括:

  • 所有数据库
  • 用户
  • 权限
  • 表结构

四、只备份表结构

例如:

1
mysqldump -u root -p -d cms > cms-structure.sql

-d 是什么意思?

表示:

1
只导出表结构

不导出数据。


五、只备份某张表

例如:

1
mysqldump -u root -p cms user > user.sql

作用:

1
只备份 user 表

六、压缩备份(推荐)

大型数据库:

1
建议直接 gzip 压缩

例如:

1
mysqldump -u root -p cms | gzip > cms.sql.gz

优点:

  • 节省空间
  • 传输更快

恢复 gzip 数据库

例如:

1
gunzip < cms.sql.gz | mysql -u root -p cms

七、自动备份(推荐)

Linux 推荐:

1
crontab 定时任务

例如:

每天凌晨 3 点自动备份:

1
0 3 * * * mysqldump -u root -p密码 cms > /backup/cms.sql

编辑 crontab

执行:

1
crontab -e

推荐自动删除旧备份

例如:

1
find /backup -mtime +7 -delete

作用:

1
删除 7 天前备份

防止:

1
磁盘被占满

八、查看数据库大小

进入 MySQL:

1
2
3
4
5
6
SELECT
table_schema AS 'Database',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2)
AS 'Size (MB)'
FROM information_schema.tables
GROUP BY table_schema;

九、常见问题

1. Access denied

原因:

  • 用户权限不足
  • 密码错误

建议:

1
使用 root

2. Unknown database

说明:

1
数据库不存在

需要:

1
CREATE DATABASE xxx;

3. 导入中文乱码

建议:

1
mysql -u root -p --default-character-set=utf8mb4

4. 超大数据库导入很慢

推荐:

  • 使用 screen
  • 使用 tmux
  • 后台运行

否则:

1
SSH 断开会导致导入中断

十、推荐生产环境方案

建议:

功能 推荐
自动备份 开启
gzip 压缩 开启
异地备份 开启
定时删除旧备份 开启
数据库监控 开启

推荐备份目录

例如:

1
/backup/mysql/

分类:

1
按日期备份

例如:

1
2026-05-21-cms.sql

十一、重要提醒

数据库备份:

1
一定要定期测试恢复

很多人:

1
以为备份成功了

但真正恢复时:

1
才发现文件损坏

所以:

1
备份 ≠ 可恢复

一定要:

1
定期验证

总结

MySQL 常用命令:

功能 命令
导入数据库 mysql < xxx.sql
导出数据库 mysqldump
导出所有数据库 –all-databases
压缩备份 gzip
定时备份 crontab

推荐:

1
mysqldump + gzip + crontab

这是:

1
最经典的 MySQL 备份方案

非常适合:

  • Ubuntu
  • 云服务器
  • 网站运维
  • Docker
  • VPS
  • 企业生产环境