步驟 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 "備份腳本執行完畢!"