数据的安全一直是我们最担心的,所以人们经常给重要数据做一个备份,防止意外发生,这样既可以把损失减到最低,甚至可以完全保障数据的完整可用性。
这是一份最稳定、最通用、适合 WordPress的 MySQL 自动备份定时任务,直接复制就能用,通过脚本+定时任务方式实现,它支持:
- 每天自动备份
- 按日期命名文件
- 保留 N 天、自动清理旧文件
- 备份文件单独目录,保证文件安全不乱
一、先创建备份存放目录
mkdir -p /backup/mysql
chmod 700 /backup/mysql
二、创建备份脚本:mysql_backup.sh
vim /backup/mysql_backup.sh
粘贴下面内容,只改数据库名、账号、密码即可:
#!/bin/bash
# 数据库信息
DB_NAME="你的数据库名"
DB_USER="数据库用户名"
DB_PASS="数据库密码"
DB_HOST="localhost"
# 备份存放路径
BACKUP_DIR="/backup/mysql"
# 日期格式
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# 开始备份
mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_$DATE.sql.gz
# 删除7天前的备份(自动清理)
find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -type f -mtime +7 -delete
三、赋予执行权限
chmod +x /backup/mysql_backup.sh
先手动执行一次测试是否正常:
重要提醒:为了保证脚本的可用性,先自己本地测试过,确保能正常使用,不用直接上生产环境。
/backup/mysql_backup.sh
去 /backup/mysql 看有没有生成 .sql.gz 文件。
四、添加到 crontab 定时任务
如果你想每天 凌晨 2:00 自动备份,可以这样操作:
crontab -e
添加一行:
0 2 * * * /backup/mysql_backup.sh
保存退出即可。
五、如果你想备份所有数据库
把脚本里的 mysqldump 一行换成下面命令:
mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASS --all-databases | gzip > $BACKUP_DIR/all_db_$DATE.sql.gz
六、简单说明
0 2 * * *→ 每天 02:00 执行gzip→ 自动压缩,节省空间-mtime +7→ 自动删除 7 天前 的备份,不占硬盘- 备份目录
/backup/mysql不在网站目录下,更安全 - –all-databases 表示备份所有数据库
七、安全小建议
- 不要用 root 账号备份,用 WordPress 专用数据库用户
- 脚本权限 700,避免泄露密码(因为脚本中存放有数据库的连接帐号密码)
- 定期下载一份到本地电脑