第一步:创建备份脚本
bash
nano /root/backup_mysql.sh
粘贴以下内容(填入你自己的用户名密码):
bash
#!/bin/bash
# ===== 配置区域 =====
DB_USER="xxx"
DB_PASS="你的密码"
DB_NAME="lwfanss"
DB_HOST="127.0.0.1"
BACKUP_DIR="/root/db_backups"
KEEP_DAYS=30 # 保留最近30天的备份
# ====================
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 生成文件名,带时间戳
FILENAME="${BACKUP_DIR}/${DB_NAME}_$(date +%Y%m%d_%H%M%S).sql.gz"
# 执行备份(压缩)
mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" --no-tablespaces "$DB_NAME" | gzip > "$FILENAME"
# 检查是否成功
if [ $? -eq 0 ]; then
echo "$(date '+%Y-%m-%d %H:%M:%S') 备份成功: $FILENAME" >> /root/db_backups/backup.log
else
echo "$(date '+%Y-%m-%d %H:%M:%S') 备份失败!" >> /root/db_backups/backup.log
fi
# 删除超过30天的旧备份
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +$KEEP_DAYS -delete
保存退出:Ctrl+X → Y → Enter
第二步:给脚本加执行权限
bash
chmod +x /root/backup_mysql.sh
第三步:测试脚本是否正常
bash
bash /root/backup_mysql.sh
ls -lh /root/db_backups/
看到 .sql.gz 文件说明成功。
第四步:设置定时任务
土耳其时间(UTC+3)凌晨3点 = UTC 0点,服务器一般跑 UTC 时间,所以设置:
bash
crontab -e
第一次会让你选编辑器,选 1(nano)即可。
在文件末尾加上这一行:
0 0 * * 1 /root/backup_mysql.sh
这表示每周一 UTC 0点(土耳其凌晨3点)执行。
保存退出:Ctrl+X → Y → Enter
第五步:确认定时任务已生效
bash
crontab -l
能看到刚才那行就对了。
还原备份的方法(迁移时用)
bash
gunzip < /root/db_backups/lwfanss_20240101_000000.sql.gz | mysql -h 127.0.0.1 -u lwfanss -p lwfanss
You said: root@longwell:~# bash /root/backup_mysql.
个人微信:ssevening