MySQL 定时备份与恢复
MySQL 定时备份与恢复
一、MySQL 定时备份
1.1 使用 mysqldump
备份数据库
mysqldump
是 MySQL 提供的一个备份工具,用于导出数据库的内容。常见的备份命令如下:
mysqldump -u [用户名] -p[密码] [数据库名] > /path/to/backup/database_backup.sql
参数说明:
- -u [用户名]:MySQL 的用户名。
- -p [密码]:MySQL 用户的密码(没有空格)
- [数据库名]:要备份的数据库名称。 /path/to/backup/database_backup.sql:备份文件的保存路径及文件名
1.2 使用 cron 定时任务设置自动备份
在 Linux 系统中,可以使用 cron 来设置定时任务自动执行备份。
- 编辑 crontab 配置文件:
crontab -e
- 添加以下行来每周日晚上 2 点进行数据库备份:
0 2 * * 0 /usr/bin/mysqldump -u [用户名] -p[密码] [数据库名] > /path/to/backup/database_backup_$(date +\%F).sql
-
0 2 * * 0:表示每周日凌晨 2 点执行任务。
- 0:分钟(0 分钟,即整点)
- 2:小时(2 点)
- *:表示每月的每一天
- *:表示每月的每一个月
- 0:表示星期日(周日是 0,周一是 1,以此类推)
$(date +\%F)
:自动生成当前日期,备份文件名会包括日期。
1.3 备份目录清理
为了避免备份文件占满硬盘,可以设置一个清理旧备份文件的定时任务。例如,保留 7 天内的备份,删除 7 天之前的备份文件:
0 3 * * * find /path/to/backup/ -type f -name "*.sql" -mtime +7 -exec rm {} \;
二、MySQL 恢复备份
2.1 使用 mysql 命令恢复备份
mysql -u [用户名] -p[密码] [数据库名] < /path/to/backup/database_backup.sql
参数说明:
- -u [用户名]:MySQL 用户名。
- -p [密码]:MySQL 用户密码。
- [数据库名]:要恢复的数据库名称。
- /path/to/backup/database_backup.sql:备份文件的路径。
PS: 将会按你备份的sql恢复, 且不可还原,操作需谨慎。最后使用操作新数据库还原的方式
2.2 恢复到新数据库
- 创建新数据库:
mysql -u [用户名] -p[密码] -e "CREATE DATABASE new_database;"
- 恢复备份到新数据库:
mysql -u [用户名] -p[密码] new_database < /path/to/backup/database_backup.sql
PS: 数据无价,所有涉及到数据库的操作,需慎重,优先备份。