Mysql 自动备份脚本

第一步:创建备份脚本

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+XYEnter


第二步:给脚本加执行权限

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+XYEnter


第五步:确认定时任务已生效

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

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注