MySQL数据库备份脚本

仅需要修改变量值  变量值需要根据实际修改

#!/bin/bash

# 数据库类型,不同类型需要修改
DATABASE_TYPE="MySQL"

# 配置部分,需要修改
MYSQL_USER="数据库用户名"
MYSQL_PASSWORD="数据库密码"
MYSQL_HOST="数据库所在主机"
# 需要备份的数据库列表,多个数据库使用空格隔开,例如("database1" "database2") 
MYSQL_DATABASES=("database1")

# 备份文件存放路径,本地路径,根据需求修改
BACKUP_DIR="/home/backup_user/${MYSQL_HOST}_${DATABASE_TYPE}"
LOG_FILE="$BACKUP_DIR/backup.log"

# 远程服务器配置,备份服务器根据需求修改
REMOTE_USER="备份机用户名"
REMOTE_HOST="备份机IP"
REMOTE_DIR="/home/db_backup/${MYSQL_HOST}-${DATABASE_TYPE}"

# 创建远程备份目录(如果不存在)
ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p ${REMOTE_DIR}"

# 创建本地备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 循环遍历每个数据库进行备份
for DB in "${MYSQL_DATABASES[@]}"; do
    BACKUP_FILE="$BACKUP_DIR/$DB-$(date +%F-%H%M%S).sql"
    
    echo "[$(date)] 开始备份数据库 $DB..." | tee -a $LOG_FILE
    mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD -h $MYSQL_HOST $DB > $BACKUP_FILE
    
    if [ $? -eq 0 ]; then
        echo "[$(date)] 数据库 $DB 备份成功,文件位置:$BACKUP_FILE" | tee -a $LOG_FILE
    else
        echo "[$(date)] 数据库 $DB 备份失败" | tee -a $LOG_FILE
        continue
    fi
    
# 传输备份文件到远程服务器,这一步需要提前做ssh免密
echo "[$(date)] 开始传输备份文件 $BACKUP_FILE 到远程服务器 $REMOTE_HOST..." | tee -a $LOG_FILE
scp $BACKUP_FILE $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR
if [ $? -eq 0 ]; then
	echo "[$(date)] 备份文件 $BACKUP_FILE 传输成功" | tee -a $LOG_FILE
else
	echo "[$(date)] 备份文件 $BACKUP_FILE 传输失败" | tee -a $LOG_FILE
fi
    
    # 删除本地备份文件(可选)
    # rm $BACKUP_FILE
done
if [ $? -eq 0 ];then
	echo "[$(date)] 所有数据库备份流程完成" | tee -a $LOG_FILE
else
	echo "[$(date)] 数据库备份流程执行失败" | tee -a $LOG_FILE && exit 99
fi


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你不是我的二狗子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值