MySQL完全备份指的是将某一个时间点下整个数据库实例或指定库表的所有数据完整导出保存,恢复则是把这些数据重新载入到MySQL服务中。它是防范误操作和硬件故障的最后一道防线,理解其流程对运维和开发人员都很重要。

什么是MySQL完全备份
完全备份会包含库结构、表结构以及全部行记录,不像增量备份只记录变化。优点是可以独立还原,缺点在于占用空间大、耗时较长。通常我们按业务容忍度,每天或每周做一次完全备份。
常见实现方式
- 逻辑备份:使用mysqldump工具生成SQL文本
- 物理备份:直接复制data目录或使用xtrabackup
使用mysqldump做完全备份
下面示例将test库完整导出为sql文件,包含建表语句与插入数据。
# 备份整个test数据库 mysqldump -u root -p --single-transaction --routines --events test > /backup/test_full.sql
参数--single-transaction可在InnoDB下保证一致性,--routines导出存储过程,--events导出事件。
如何从完全备份恢复
恢复前请确认目标实例已创建空库,且版本不低于备份时版本。执行如下命令即可重放SQL。
# 先登录创建数据库 mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS test;" # 导入备份文件 mysql -u root -p test < /backup/test_full.sql
物理文件恢复注意点
| 项目 | 说明 |
|---|---|
| 权限 | 复制回data目录后需将属主改为mysql用户 |
| 版本 | 物理文件一般要求同版本或相近小版本 |
提升安全性的建议
备份文件应异地保存,并定期做恢复演练,避免真出事时发现备份不可用。
可以在脚本里加入校验和,并把备份传至其他机器。示例校验命令如下:
# 生成校验值 md5sum /backup/test_full.sql > /backup/test_full.md5
只要把完全备份与恢复流程规范化,MySQL数据安全事故的可控性就会明显提高。