MySQL数据库的备份与恢复是保障数据安全的核心操作。一旦出现硬件故障、误删数据或系统崩溃,有完整的备份就能快速还原服务。下面介绍几种常用的MySQL备份与恢复方法,适合不同场景使用。
使用mysqldump进行逻辑备份
mysqldump 是MySQL自带的逻辑备份工具,适用于中小规模数据库,能将数据导出为SQL脚本文件。
常见备份命令:
备份单个数据库:mysqldump -u 用户名 -p 数据库名 > 备份文件.sql 备份所有数据库:
mysqldump -u 用户名 -p --all-databases > 全库备份.sql 只备份表结构(不包含数据):
mysqldump -u 用户名 -p --no-data 数据库名 > 结构备份.sql 压缩备份节省空间:
mysqldump -u 用户名 -p 数据库名 | gzip > 备份文件.sql.gz
恢复MySQL数据
恢复操作就是将备份的SQL文件重新导入数据库。
基本恢复步骤:
登录MySQL:mysql -u 用户名 -p 选择目标数据库:
use 数据库名; 执行导入:
source /路径/备份文件.sql;
如果是压缩文件,先解压再导入,或者直接用:
gunzip
物理备份:直接复制数据文件
物理备份指直接复制MySQL的数据目录文件(如/var/lib/mysql),速度快,适合大型数据库。
注意事项:
必须停止MySQL服务或确保表不被修改,避免数据不一致。 使用rsync或cp命令复制整个数据目录。 恢复时替换原数据目录,并注意文件权限和属主。推荐搭配Percona XtraBackup工具实现热备份,无需停机。
定时自动备份设置
通过Linux的crontab设置定时任务,实现每日自动备份。
示例脚本(backup_mysql.sh):
#!/bin/bashmysqldump -u root -p密码 数据库名 > /backup/mysql_$(date +\%Y\%m\%d).sql
find /backup -name "mysql_*.sql" -mtime +7 -delete
添加定时任务(每天凌晨2点执行):
0 2 * * * /bin/bash /路径/backup_mysql.sh
基本上就这些。根据实际需求选择合适的备份方式,定期验证备份文件是否可正常恢复,才能真正保障数据安全。
