详细使用xtrabackup shell脚本备份, 每周日凌晨3点全量备份,除 每周日凌晨3点全量备份外,每小时增量备份,保存90天数据库
时间: 2024-04-15 18:31:39 浏览: 271
通过shell脚本,备份mysql数据库
下面是一个详细的示例脚本,可以实现每周日凌晨3点进行全量备份,除此之外每小时进行增量备份,并保留90天的数据库备份:
```bash
#!/bin/bash
# 设置备份目录
BACKUP_DIR="/path/to/backup/directory"
# 设置MySQL连接信息
MYSQL_USER="your_mysql_user"
MYSQL_PASSWORD="your_mysql_password"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 获取当前时间
CURRENT_TIME=$(date +%Y%m%d%H%M%S)
# 获取当前星期几(0-6表示周日到周六)
WEEKDAY=$(date +%w)
# 检查是否是周日凌晨3点
if [ $WEEKDAY -eq 0 ] && [ $(date +%H) -eq 3 ]; then
# 周日凌晨3点进行全量备份
xtrabackup --backup --user=$MYSQL_USER --password=$MYSQL_PASSWORD --target-dir=$BACKUP_DIR/full_$CURRENT_TIME
else
# 其他时间进行增量备份
# 获取上一次全量备份的时间
LAST_FULL_BACKUP=$(ls -d $BACKUP_DIR/full_* | tail -n 1)
if [ -z "$LAST_FULL_BACKUP" ]; then
# 如果没有找到上一次全量备份,则进行第一次全量备份
xtrabackup --backup --user=$MYSQL_USER --password=$MYSQL_PASSWORD --target-dir=$BACKUP_DIR/full_$CURRENT_TIME
LAST_FULL_BACKUP=$BACKUP_DIR/full_$CURRENT_TIME
fi
# 进行增量备份
xtrabackup --backup --user=$MYSQL_USER --password=$MYSQL_PASSWORD --target-dir=$BACKUP_DIR/incr_$CURRENT_TIME --incremental-basedir=$LAST_FULL_BACKUP
fi
# 删除90天之前的备份(保留最近90天的备份)
find $BACKUP_DIR -type d -name "full_*" -mtime +90 -exec rm -rf {} \;
find $BACKUP_DIR -type d -name "incr_*" -mtime +90 -exec rm -rf {} \;
```
将以上脚本保存为一个shell脚本文件,并根据你的实际情况修改相关参数。然后,通过设置定时任务(例如crontab)来每小时执行该脚本即可实现每周日凌晨3点全量备份,除此之外每小时增量备份,并保留最近90天的数据库备份。
请注意,以上脚本仅提供了基本的备份逻辑,实际使用时可能需要根据需求进行进一步的优化和安全性考虑。务必确保你的数据库连接信息和备份目录设置正确,并对备份文件进行适当的保护和存储。
阅读全文