MySQL 数据备份与恢复
目录
一、数据备份
1. 使用 mysqldump(逻辑备份)
备份多个数据库
备份所有数据库
备份单张表
参数解释
2.使用 mysqlpump(逻辑备份,MySQL 5.7+)
3. 物理备份(如 XtraBackup)
二、数据恢复
1. 使用 mysql 命令恢复(对应 mysqldump 的备份)
恢复数据库
2.还原单张表
使用 XtraBackup 恢复(物理备份)
三、注意事项
MySQL 数据备份与恢复是数据库管理中非常关键的任务,分为逻辑备份和物理备份两大类。
一、数据备份
1. 使用 mysqldump
(逻辑备份)
适合小到中型数据库,导出为 SQL 脚本。
备份整个数据库
mysqldump -u root -p mydatabase > mydatabase_backup.sql
备份多个数据库
mysqldump -u root -p --databases db1 db2 > backup.sql
备份所有数据库
mysqldump -u root -p --all-databases > alldb_backup.sql
备份单张表
mysqldump -u root -p mydatabase mytable > mytable_backup.sql
参数解释
-
--single-transaction
:适合 InnoDB,避免锁表。 -
--routines
:包括存储过程和函数。 -
--events
:包括事件。 -
--flush-logs
:备份前刷新日志。
2.使用 mysqlpump
(逻辑备份,MySQL 5.7+)
更快、支持并发备份。
mysqlpump -u root -p mydatabase > mydatabase_pump_backup.sql
3. 物理备份(如 XtraBackup)
适合大数据量、支持增量/压缩备份,适用于企业级。
xtrabackup --backup --target-dir=/data/backups/ --datadir=/var/lib/mysql
二、数据恢复
1. 使用 mysql
命令恢复(对应 mysqldump
的备份)
恢复数据库
mysql -u root -p mydatabase < mydatabase_backup.sql
如果备份文件中已包含 CREATE DATABASE
和 USE
语句,可省略数据库名:
mysql -u root -p < backup.sql
2.还原单张表
如果只备份了某一张表,对应也只恢复这一张。
mysql -u root -p mydatabase < mytable_backup.sql
使用 XtraBackup 恢复(物理备份)
xtrabackup --prepare --target-dir=/data/backups/ xtrabackup --copy-back --target-dir=/data/backups/
之后需设置权限并重启 MySQL:
chown -R mysql:mysql /var/lib/mysql systemctl restart mysql
三、注意事项
-
定期备份 + 异地存储(如 OSS、网盘等)
-
重要业务需考虑冷备 + 热备 + binlog 组合策略
-
使用 cron 定时任务实现自动化备份
-
恢复前请测试备份文件可用性,尤其是结构和数据完整性