liunx 下定时数据库脚本

步骤 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 "备份脚本执行完毕!"    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容