MySQL定时备份数据库shell脚本

本文详细介绍了一种利用mysqldump命令与shell脚本结合的数据库定时备份方案,通过crontab实现自动化备份,包括数据库导出、备份文件夹创建、备份文件压缩及旧文件清理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysqldump命令备份数据

数据库导出,主要用到mysqldump 命令

 mysqldump  -h$DB_HOST -u$DB_USER -p$DB_USER_PASSWD $dbname > $TODAYBACKUPPATH/$dbname.sql

整个shell脚本

具体脚本如下:

DB_HOST='localhost'
DB_USER='root'
DB_USER_PASSWD='***'
DB_NAME='/home/dbbackup/dbnames.txt'
BACKUP_PATH='/home/dbbackup/mysql/'

printf "createing backup folder!\n"
DATETIME=$(date +%Y%m%d_%H%M)
TODAYBACKUPPATH="$BACKUP_PATH$DATETIME"
#创建备份文件夹
if [ ! -d "$TODAYBACKUPPATH" ];
then
  printf "create dir $TODAYBACKUPPATH \n"
  mkdir -pv "$TODAYBACKUPPATH"
fi
printf "checking for databases names file\n"
#定义执行备份脚本,读取文件中的数据库名称,注意按行读写,不校验是否存在该库
run_backup (){
  #读取 DB_NAME文件中的内容
  for dbname in $(<$DB_NAME);do 
  #遍历循环执行备份sql
    printf "now starting backup database %s\n" $dbname
    printf "mysqldump -h$DB_HOST -u$DB_USER -p$DB_USER_PASSWD $dbname > $TODAYBACKUPPATH/$dbname.sql \n"
    mysqldump  -h$DB_HOST -u$DB_USER -p$DB_USER_PASSWD $dbname > $TODAYBACKUPPATH/$dbname.sql
  done
}

#执行压缩的函数
run_tar(){
  # 将今日的备份文件打包成压缩文件
  compress_file="$TODAYBACKUPPATH.tar.gz"
  cd $BACKUP_PATH
  pwd
  tar -czvf $compress_file $DATETIME
  printf "compress complete!\n"
  #删除备份文件夹
  rm -rf $TODAYBACKUPPATH
}
#删除30天前的文件
del_30day_backup_file(){
  find ${BACKUP_PATH} -name "*.tar.gz" -mtime +30 -exec rm -rfv {} \;
}
_main(){
 printf "starting backup of all db listed in file $DB_NAME \n"
 printf "time is $DATETIME\n"
 run_backup
 run_tar
 del_30day_backup_file
 exit 0
}
_main

dbnames.txt中内容
在这里插入图片描述

脚本中的DB_HOST ,DB_USER_PASSWD,DB_NAME,BACKUP_PATH 根据情况自己更改。dbnames.txt 中一行只能有一个数据库名

使用crontab定期执行备份脚本

crontab 使用详解

crontab -e
#将下面这条脚本意思是 每天晚上23点50分钟时调用 /home/firm-pms/39.dump.sh 脚本
50 23 * * * /home/firm-pms/39.dump.sh >> /home/firm-pms/back_39_log.log 

在这里插入图片描述
crontab -l 查看定时任务
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值