数据库备份---多个数据库

记录一次数据库备份脚本问题

脚本文件

#!/bin/bash1
# Name:bakmysql.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#

# Database info
DB_USER="root"                                             #mysql login name
DB_PASS="xxx"                                           #password
DB_HOST="xxx"                             #db_address
DB_PORT="3306"
MYSQL=mysql

DB_ZFBM="--default-character-set=utf8" #character
#DB_TABLE="exam_quest_bank"             #table name

# Others vars
BIN_DIR="/usr/bin"            #the mysql bin path
BCK_DIR="/data/mysql/mysqlDataBackup"    #the backup file directory
DATE=`date +%F`


#sql back
# 因为我想对数据库所有库备份,所以我要先去查有哪些数据库, -N -s  就是去省略掉 |
command="show databases"
declare DBS=`$MYSQL  -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASS} -N -s -e "${command}" `
#echo "$DBS"


for i in $DBS
do
   # 我现在拿到所有库了,但是系统库或者一些我不想备份的库可以在此处省略掉
   if [ "$i" != "information_schema" ] && [ "$i" != "mysql" ] && [ "$i" != "performance_schema" ] && [ "$i" != "sys" ]
   then
       mysqldump --opt -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASS} ${DB_ZFBM}  ${i} | gzip >$BCK_DIR/${i}_${DATE}.sql.gz
       echo $i
   fi
done


#
#-type f                 表示查找普通类型的文件,f表示普通文件。
#-mtime +7           按照文件的更改时间来查找文件,+7表示文件更改时间距现在7天以前;如果是 - 
#  mmin +5 表示文件更改时间距现在5分钟以前。
# -exec rm {} \;       表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。
# /dev/null 2>&1      把标准出错重定向到标准输出

find $BCK_DIR -name "db_*.sql" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1

对上面参数进行一个说明

  • DB_USER:数据库用户名
  • DB_PASS: 数据库密码
  • DB_HOST:数据库服务器地址
  • DB_PORT:端口
  • MYSQL:mysql
  • DB_ZFBM:字符集编码
  • DB_TABLE:表名,如果是对整个库备份,省略
  • BIN_DIR:mysqldump地址,默认centos7好像是/usr/bin
  • BCK_DIR: 备份存放的路径

编写好脚本后,需要给这个脚本我文件授权

chmod +x bakmysql.sh

然后执行该文件  

sh bakmysql.sh

最后自己加一个加一个crontab定时任务就行了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值