一键备份单个、多个及全数据库(脚本)

脚本内容

#!/bin/bash
MYSQL_DIR=/usr/local/mariadb/bin
DATE=`date +%Y%m%d%H%M`
DB_BAK_DIR=/data/dbbak

if [ ${UID} -ne 0 ];then
                echo -e "\033[32m请使用root用户来执行此脚本\033[0m"
                exit 1
fi

read -p "请输入要备份的数据库名,如果要备份所有数据库,请输入all :  " database

if [ -z "${database}" ];then
        echo -e "\033[32m已退出,请重新执行并按提示输入要备份的数据库名!\033[0m"
        exit 1
fi

if [ ! -d ${DB_BAK_DIR} ];then
        mkdir -p /data/dbbak
fi

for database in ${database}
do
        if [ ${database} == all ];then
                ${MYSQL_DIR}/mysqldump -h 192.168.1.21 -ubackup -p123456 --all-databases >${DB_BAK_DIR}/all${DATE}.sql
                if [ $? -eq 0 ];then
                        echo -e "\033[32m全数据库备份成功,文件:-> ${DB_BAK_DIR}/all${DATE}.sql\033[0m"
                else
                        echo -e "\033[32m全数据库备份失败,请检查\033[0m"
                fi
        else
        		#检查此数据库是否存在
                 mysql -h 192.168.1.21 -ubackup -p123456 -e "show databases;" >testdb.txt
                 sed -i '1d' testdb.txt
                 cat testdb.txt|grep ${database}
                 if [ $? -ne 0 ];then 
                        echo -e "\033[32m数据库${database}备份失败,请检查是否存在\033[0m"
                        continue
                 fi

                ${MYSQL_DIR}/mysqldump -h 192.168.1.21 -ubackup -p123456 -B ${database}>${DB_BAK_DIR}/${database}${DATE}.sql

                if [ $? -ne 0 ];then
                        echo -e "\033[32m数据库${database}备份失败,请检查\033[0m"
                        exit 1
                else
                        echo -e "\033[32m数据库${database}备份成功!文件:-> ${DB_BAK_DIR}/${database}${DATE}.sql\033[0m"      
                fi
        fi
done

执行结果

一键备份单个、多个及全数据库(脚本)_第1张图片

----------------end

你可能感兴趣的:(SHELL(脚本),数据备份,#,脚本,数据库备份)