跳过正文
  1. Posts/

mysql数据库备份shell脚本—直接拿来用的shell脚本

·106 字·1 分钟·
Kubehan
作者
Kubehan
云原生知识栈:深度解析容器技术、Kubernetes、Istio、DevOps 实践、Prometheus 监控、Envoy 代理、Golang 开发及云原生架构与微服务趋势的专业博客

mysql数据库备份shell脚本—直接拿来用的shell脚本
经过我的一次次的尝试,脚本优化后写出来这个脚本给大家使用
使用中遇到问题的可以留言联系方式解答

#!/bin/bash
#auto bakcup mysql db
#by authprs hanwei  2019/12/03
#describe:备份多个数据库只需要在对应的目录建一个只含有数据库库名的mysql.list再执行脚本就行了
########################   定义&变量   ###################################
date=`date +"%Y-%m-%d"`
BAK_DIR=/data/mysql_backup/   #目录
#MYSQLDB='cat ./mysql.list'     #数据库名
MYSQLUSR=root   #用户名
MYSQPASSWD=123456       #密码
MYSQLCMD=/usr/local/mysql/bin/mysqldump     #调用的数据库命令 
########################  开始  ###############################
#判断用户是否为超级用户。
if [ $UID -ne 0 ];then
    echo "请使用超级用户。"
    exit
fi

#判断MySQL数据库的备份目录目录是否存在。
if [ ! -d $BAK_DIR ];then
    mkdir -p $BAK_DIR
    echo -e "33[32m $BAK_DIR 目录创建成功!33[0m"
else
    echo -e "33[32m $BAK_DIR 已存在!33[0m"
fi

#备份MySQL数据库的命令。
#命令格式为 -u用户 -p密码 -d指定的数据库
for database in `cat ${BAK_DIR}/mysql.list`
do
    $MYSQLCMD -u${MYSQLUSR} -p${MYSQPASSWD} -x ${database} > $BAK_DIR/${date}.${database}.sql
    #检查是否备份成功。
    if [ $? -eq 0 ];then
        echo -e "33[32m 备份$database 成功!33[0m"
    else
        echo -e "33[32m 备份$database 失败,请检查...33[0m"
        rm -rf $BAK_DIR/${date}.${database}.sql
    fi
done