MySQL备份Shell脚本

        将此脚本添加到crontab计划中,自动留存最新的两份备份 

#!/bin/bash
# 数据库配置
DB_HOST="localhost"
DB_USER="root"
DB_PASS="Sxbdc123!@#"
DB_NAME="ww"

# 备份目录
BACKUP_DIR="/opt/mysqlbak"

# 备份文件名称
BACKUP_FILE="${BACKUP_DIR}/backup-$(date +'%Y%m%d%H%M%S').sql"
   
# 执行备份命令
mysqldump -h${DB_HOST} -u${DB_USER} -p${DB_PASS} ${DB_NAME} > ${BACKUP_FILE}
# 获取最新的两个备份文件
BACKUP_FILES=($(ls -t ${BACKUP_DIR}/backup-*.sql))
BACKUP_COUNT=${#BACKUP_FILES[@]}

for ((i=0;i<BACKUP_COUNT;i++))do
echo ${BACKUP_FILES[i]}
done
echo $BACKUP_COUNT

# 删除多余的备份文件
if [ $BACKUP_COUNT > 2 ]; then
  for (( i=2; i<$BACKUP_COUNT; i++ )); do
     rm ${BACKUP_FILES[$i]}
  done
fi

定义变量 :直接定义,变量应为唯一字段

DB_USER="root"

调用变量 :$变量名

echo $DB_USER  #输出变量DB_USER

定义数组 :数组名

BACKUP_FILES

数组赋值 :数组名=(值)

BACKUP_FILES=($(ls -t ${BACKUP_DIR}/backup-*.sql)) #数组的值需要用括号括起来

   ls  -t  ${BACKUP_DIR}/backup-*.sql  按照文件最后修改时间,查找出${BACKUP_DIR}目录下所有前缀为 backup 后缀为 .sql 的文件,放入数组中

循环数组 :for((循环条件))

for ((i=0;i<BACKUP_COUNT;i++))do
echo ${BACKUP_FILES[i]}
done
for(循环条件)
do 
执行的内容
done

数组的输出 :$[数组名[ 下标 ]]

echo ${BACKUP_FILES[i]}

if 判断 :if(判断条件)then fi  条件中的2是用来控制备份数量

if [ $BACKUP_COUNT > 2 ]; then
  for (( i=2; i<$BACKUP_COUNT; i++ )); do
     rm ${BACKUP_FILES[$i]}
  done
fi
if [ 判断条件 ]; 
then
  条件成立所执行方法
fi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值