步骤 1:编写备份脚本
首先,你需要创建一个备份脚本,这里以使用 tar
命令打包备份整个 data
目录为例。创建一个名为 mysql_backup.sh
的脚本文件:
bash
#!/bin/bash
# 定义备份路径和文件名
backup_dir="/path/to/backup"
backup_file="$backup_dir/mysql_data_backup_$(date +%Y%m%d%H%M%S).tar.gz"
# 创建备份目录(如果不存在)
mkdir -p $backup_dir
# 进入 MySQL 的 data 目录,一般是 /var/lib/mysql
cd /var/lib/mysql
# 使用 tar 命令打包备份
sudo tar -zcvf $backup_file .
将上述脚本保存为 mysql_backup.sh
,并赋予其执行权限:
bash
chmod +x mysql_backup.sh
步骤 2:编辑 cron
表
使用以下命令编辑当前用户的 cron
表:
bash
crontab -e
若你是第一次编辑,系统会让你选择一个文本编辑器。选择合适的编辑器后,在打开的文件中添加定时任务。以下是不同时间间隔的示例:
每天凌晨 2 点执行备份任务
plaintext
0 2 * * * /path/to/mysql_backup.sh
每周日凌晨 3 点执行备份任务
plaintext
0 3 * * 0 /path/to/mysql_backup.sh
每月 1 号凌晨 4 点执行备份任务
plaintext
0 4 1 * * /path/to/mysql_backup.sh
image.png
在上述示例中,将 /path/to/mysql_backup.sh
替换为你实际的脚本路径。
步骤 3:保存并退出
编辑完 cron
表后,保存并退出文本编辑器。cron
服务会自动加载新的定时任务。
步骤 4:验证定时任务
你可以使用以下命令查看当前用户的 cron
任务列表,以验证任务是否添加成功:
bash
crontab -l
image.png
通过以上步骤,你就可以在 Linux 系统下设置定时任务来备份 MySQL data
目录下的文件了。
2025-05-12 补充 删除多余的备份
#!/bin/bash
# 定义备份路径和文件名
backup_dir="/home/mysql8/backup"
backup_file="$backup_dir/mysql_data_backup_$(date +%Y%m%d%H%M%S).tar.gz"
# 创建备份目录(如果不存在)
mkdir -p "$backup_dir"
# 进入 MySQL 的 data 目录
cd /home/mysql8/data || exit
# 使用 tar 命令打包备份
echo "开始备份 MySQL 数据..."
if sudo tar -zcvf "$backup_file" .; then
echo "备份成功: $backup_file"
else
echo "备份失败!"
exit 1
fi
# 删除多余的备份,只保留最近的 10 个
echo "清理旧备份..."
backup_count=$(ls -1 "$backup_dir"/mysql_data_backup_*.tar.gz 2>/dev/null | wc -l)
if [ "$backup_count" -gt 10 ]; then
files_to_delete=$((backup_count - 10))
ls -1t "$backup_dir"/mysql_data_backup_*.tar.gz | tail -n "$files_to_delete" | xargs -r sudo rm -v
echo "已删除 $files_to_delete 个旧备份"
else
echo "无需删除旧备份,当前备份数量: $backup_count"
fi
echo "备份脚本执行完毕!"