Shell脚本一键备份MySQL数据库

4 篇文章 0 订阅
2 篇文章 0 订阅

在我公司原来的备份脚本做的优化改动给大家分享下

使用时注意变量 ,配合cron执行脚本实现备份效果

#!/bin/bash

export PATH=/bin:/usr/bin:/usr/local/bin

TODAY=$(date +%Y-%m-%d)

date=$(date +%s)

echo "Backup date: $TODAY"

################## 这块根据自己情况修改 ########################
#备份路径
DB_BACKUP_PATH='/home/backup/'
#数据库地址
MYSQL_HOST='localhost'
#端口
MYSQL_PORT='3306'
#数据库用户
MYSQL_USER='root'
#数据库密码
MYSQL_PASSWORD='123456'

# 需要备份的库
DATABASES=( "data" "manage" "base" "engine" "cloud" "nacos")
#删除大于多少天的备份
BACKUP_RETAIN_DAYS=25

#################################################################

mkdir -p "$DB_BACKUP_PATH/$TODAY"
echo "Backup directory creation done. Start backup."

# 这里注意自己mysqldump的路径
for DATABASE_NAME in "${DATABASES[@]}"; do
  /usr/local/mysql/bin/mysqldump --single-transaction -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$DATABASE_NAME" | gzip > "$DB_BACKUP_PATH/$TODAY/$DATABASE_NAME-$TODAY.sql.gz"

  if [ $? -eq 0 ]; then
    echo "Database backup for $DATABASE_NAME done"
  else
    echo "Error while backing up $DATABASE_NAME"
    exit 1
  fi
done

# 提前做免密
# ssh-keygen -t rsa 一直回车
# ssh-copy-id -i root@172.11.17.43  发送到远程服务器防止单点故障
for DATABASE_NAME in "${DATABASES[@]}"; do
  scp -r "$DB_BACKUP_PATH/$TODAY" root@172.11.17.43:/home/backup
done

# 删除目录年龄大于25天的备份
for directory in "$DB_BACKUP_PATH"*/; do
    if [ -d "$directory" ]; then
        dir_date=$(date -r "$directory" +%s)
        age=$(( (date - dir_date) / 86400 ))
        
        if [ "$age" -gt "$BACKUP_RETAIN_DAYS" ]; then
          rm -rf "$directory"
        fi
    fi
done

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值