MySQL--简单mysqldump脚本

内容如下:

#!/bin/bash

DATE=`date '+%Y%m%d'`  
TIME=`date '+%H%M%S'`  

BAK_CMD="/data/mysql3306/bin/mysqldump -uroot -proot -hlocalhost -P3306 --default-character-set=utf8 --master-data=2 --single-transaction "
DB_NAME="shop_zp"
DIR_NAME="/data/mysqlbak/db_bak/table_bak/"


#选择备份数据库名  
printf "请输入备份数据库名,默认[${DB_NAME}],同时备份多个库格式[db_name1 db_name2]:\n"  
while read BAK_DB_NAME  
do   
     case ${BAK_DB_NAME} in   
        'Q'|'exit'|'q')  
            printf "退出备份程序,备份结束[`date '+%Y/%m/%d %H:%M:%S'`] ...  \n"  
            exit  
            ;;  
        *)  
         if [ "`echo ^${BAK_DB_NAME}`" = "^" ]; then  
           BAK_DB_NAME=${DB_NAME}  
          fi  
          break  
          ;;  
     esac  
done  
printf "(#提示:你输入备份数据库名是[${BAK_DB_NAME}].)\n"  


#输入备份的表名  
printf "请输入备份的表名,单表即表名,多表格式[table1 table2 table3],全库或多库备份请直接回车:\n"  
while read BAK_TABLE_NAME  
do   
     case ${BAK_TABLE_NAME} in   
        'Q'|'exit'|'q')  
            printf "退出备份程序,备份结束[`date '+%Y/%m/%d %H:%M:%S'`] ...  \n"  
            exit  
            ;;  
        *)  
         if [ "`echo ^${BAK_TABLE_NAME}`" = "^" ]; then  
           BAK_TABLE_NAME="ALL"  
          fi  
          break  
          ;;  
     esac  
done  
printf "(#提示:你输入备份的表名是[${BAK_TABLE_NAME}].)\n"  


#输入备份的目录
printf "输入备份的目录,默认[${DIR_NAME}],注意路径以"/"结束:\n" 
while read TMP  
do   
     case ${TMP} in   
        'Q'|'exit'|'q')  
            printf "退出备份程序,备份结束[`date '+%Y/%m/%d %H:%M:%S'`] ...  \n"    
            exit  
            ;;  
        *)  
         if [ "`echo ^${TMP}`" = "^" ]; then  
            TMP=${DIR_NAME} 
         fi  
         if [ ! -d ${TMP} ]; then   
            printf "备份目录[${TMP}]不存在... \n"  
            printf "请输入备份目录,默认[${DIR_NAME}]:\n"  
         else  
           BAK_DIR_NAME=${TMP}  
           break  
          fi  
          ;;  
     esac  
done  
unset TMP  
printf "(#提示:你输入备份目录是[${BAK_DIR_NAME}].)\n"  


#开始执行相应级别备份脚本  
T_NAME=`echo "${DATE}_${BAK_DB_NAME}@${BAK_TABLE_NAME}_${TIME}.sql"|sed "s/ /@/g"`

if [ ${BAK_TABLE_NAME} == ALL ];then
printf "\n开始备份[${BAK_DB_NAME}]数据库[`date '+%Y/%m/%d %H:%M:%S'`] ...  \n"  
${BAK_CMD} --databases ${BAK_DB_NAME} > ${BAK_DIR_NAME}${T_NAME}
else
printf "\n开始备份[${BAK_DB_NAME}]数据库[${BAK_TABLE_NAME}]表[`date '+%Y/%m/%d %H:%M:%S'`] ...  \n"  
${BAK_CMD} --databases ${BAK_DB_NAME} --tables ${BAK_TABLE_NAME} > ${BAK_DIR_NAME}${T_NAME}
fi

printf "备份完成,备份文件[${BAK_DIR_NAME}${T_NAME}] ...大小为[`du -k ${BAK_DIR_NAME}${T_NAME} | awk '{printf $1}'` Kbytes]\n" 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值