mysql 自动备份shell脚本,支持设置保持最大副本数量

单个数据库部分

以下是一个可以备份MySQL数据库的Shell脚本,可以在CentOS操作系统上使用。该脚本使用了mysqldump命令来备份MySQL数据库,将备份文件保存在指定目录下,并保留指定数量的备份文件。

#!/bin/bash
# MySQL连接信息
USER="数据库账号"
PASSWORD="数据库密码"
HOST="localhost"
DATABASE="数据库名称"
# 备份文件信息
BACKUP_DIR="/data/mysqlbackup"
BACKUP_PREFIX="backup"
BACKUP_DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILENAME="$BACKUP_PREFIX"_"$BACKUP_DATE".sql.gz
MAX_BACKUPS=7
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 备份MySQL数据库
mysqldump -u $USER -p$PASSWORD -h $HOST $DATABASE | gzip > $BACKUP_DIR/$BACKUP_FILENAME
# 删除旧备份
cd $BACKUP_DIR
BACKUPS=$(ls -t $BACKUP_PREFIX*.sql.gz 2>/dev/null)
COUNT=1
for BACKUP in $BACKUPS
do
    if [ $COUNT -gt $MAX_BACKUPS ]; then
        rm $BACKUP
    fi
    COUNT=$((COUNT+1))
done

使用说明:

  1. 将脚本保存为一个文件,比如

backup_mysql.sh,并赋予执行权限。

  1. 根据需要修改MySQL连接信息和备份文件信息。其中,

USERPASSWORD分别为MySQL连接的用户名和密码,HOST为MySQL主机名或IP地址,DATABASE为要备份的数据库名,BACKUP_DIR为备份文件保存的目录,BACKUP_PREFIX为备份文件名的前缀,MAX_BACKUPS为要保留的最大备份数量。

  1. 将脚本添加到cron定时任务中,以定期执行备份任务。比如,可以使用以下命令打开cron配置文件:

crontab -e

然后,在文件末尾添加一行类似以下内容的命令:

0 1 * * * /data/backup_mysql.sh >/dev/null 2>&1

上述命令表示,每天凌晨1点执行一次备份任务,并将输出重定向到/dev/null以避免发送邮件通知。

注意,/data/backup_mysql.sh需要替换为实际的脚本文件路径。

  1. 保存cron配置文件并退出。现在,备份任务将在定期执行。备份文件将保存在指定的目录中,并且每次备份任务最多只会保留指定数量的备份文件。

备份所有数据库

#!/bin/bash

# MySQL 数据库信息
DB_USER="数据库账号"
DB_PASSWORD="数据库密码"
DB_HOST="localhost"

# 备份文件保存目录
BACKUP_DIR="/data/mysql"

# 备份文件保留天数
BACKUP_KEEP_DAYS=5

# 获取当前日期时间
NOW=$(date +"%Y%m%d%H%M%S")

# 创建备份文件保存目录
mkdir -p "$BACKUP_DIR"

# 备份每个数据库
for DB_NAME in $(mysql -u "$DB_USER" -p"$DB_PASSWORD" -h "$DB_HOST" -e "show databases;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"); do
    BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${NOW}.sql"
    mysqldump -u "$DB_USER" -p"$DB_PASSWORD" -h "$DB_HOST" "$DB_NAME" > "$BACKUP_FILE"
    
    # 压缩备份文件
    BACKUP_ZIP_FILE="$BACKUP_FILE.gz"
    gzip "$BACKUP_FILE"
    
    # 删除旧备份文件
    find "$BACKUP_DIR" -name "${DB_NAME}*.gz" -mtime +"$BACKUP_KEEP_DAYS" -exec rm {} \;
    
    # 记录备份日志
    echo "$(date +"%Y-%m-%d %H:%M:%S"): Backup $DB_NAME to $BACKUP_ZIP_FILE" >> "$BACKUP_DIR/backup.log"
done
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值