shell脚本备份mysql数据库

22 篇文章 0 订阅

先贴出我的shell脚本 backupdb.sh

#!/bin/bash
#定义备份数据库名
dbname=dbname
#定义备份数据库的用户名和密码
dbuser=root
dbpasswd=root
#数据库备份路径
backuppath=/home/db_backup/sqlzip/
#数据库备份日志文件存储的路径
logfile=/home/db_backup/logs/db_backup.log
#获取当前日期,用作数据库名
now=`date +%Y-%m-%d`
#拼接文件名
dumpfile=db-$now
#使用下面函数备份数据库
back_db(){
   echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile}
   mysqldump --skip-opt -u${dbuser} -p${dbpasswd} --default-character-set=utf8 --quick --force --routines --add-drop-database --add-drop-table ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}
  echo "mysqldump --skip-opt -u${dbuser} -p${dbpasswd} --default-character-set=utf8 --quick --force --routines --add-drop-database --add-drop-table ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}"

  echo $(date +%Y-%m-%d%t%A%t%T)" Beginning zip ${backuppath}${dumpfile}.sql" >>${logfile}
  tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${dumpfile}.sql 2>> ${logfile}
  echo "backup file name:"${dumpfile}".tar.gz" >>${logfile}
  echo -e "-------"$(date +%Y-%m-%d%t%A%t%T)" Ending database "${dbname}" backup-------\n" >>${logfile}

}
#删除过期文件
rm_oldfile(){
find /home/db_backup/sqlzip/ -type f -mtime +3 -exec rm {} \;
}
cd ${backuppath}
back_db
rm_oldfile

我们一般在win编辑器里面写脚本代码,但是写完之后 并不能马上运行。需要转换一下

用以下命令进行转换

sed -i 's/\r//' ./backupdb.sh

在把我的shell脚本加入到crontab进行管理

59 23 * * * /home/sh/backupdb.sh > /dev/null

这样我们就每天都能收到一个备份的数据库文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值