21.脚本编写练习12---数据库备份

『练习』:

在这里插入图片描述
实验前安装mariadb数据库,并初始化设置超级用户密码为westos
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当数据库mariadb存在并开启时,/var/lib/mysql/mysql.sock文件才会存在

#!/bin/bash
if [ ! -e "/var/lib/mysql/mysql.sock" ]			/*判断mariadb数据库是否存在并开启*/
then
        echo -e "\033[31mMysql is not running !\033[0m"
        exit 1
fi

if [ -z "$1" ]			/*判断脚本执行命令后是否有跟密码*/
then
        echo -e "\033[31mPlease input password following script !\033[0m"
        exit 2
fi

mysql -uroot -p$1 -e "SHOW DATABASES;" &> /dev/null				/*使用超用户身份登陆数据库*/		
if [ ! "$?" = "0" ]			/"$?"值不为0说明登陆数据库失败*/
then
        echo -e "\033[31mPassword error\033[0m"
        exit 1
fi
ACTION()
{
        read -p "Please input action: " CHOSE
        case $CHOSE in
                O|o)
                mysqldump -uroot -p$1 $2 > /mnt/mysqldump/${2}.sql
                ;;
                B|b)
                mv /mnt/mysqldump/${2}.sql /mnt/mysqldump/${2}_backup.sql
                mysqldump -uroot -p$1 $2 > /mnt/mysqldump/${2}.sql
                ;;
                S|s)
                ;;
                *)
                echo -e "\033[31mWrong Action !!! Please input o|b|s !\033[0m"
                ACTION
        esac
}
for DATABASE in `mysql -uroot -p$1 -e "SHOW DATABASES;" -EN | grep -E '\*|schema$' -v`			/*过滤出数据库名称*/
do
        [ -d "/mnt/mysqldump" ] || mkdir -p /mnt/mysqldump
        if [ ! -e "/mnt/mysqldump/${DATABASE}.sql" ]
        then
                mysql -uroot -p$1 $DATABASE > /mnt/mysqldump/${DATABASE}.sql
        else
                echo -e "\033[31m/mnt/mysqldump/${DATABASE}.sql is already exist !\033[0m"
                echo -e "\033[32m[O]verwrite [B]ackup [S]kip\033[0m"
                ACTION $1 $DATABASE
        fi
done

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


执行mysql -uroot -p$1 -e "SHOW DATABASES;" -EN | grep -E '\*|schema$' -v命令是为了过滤出数据库的名称
在这里插入图片描述
mysql -uroot -p$1 -e "SHOW DATABASES;"以表格形式显示数据库
在这里插入图片描述
mysql -uroot -p$1 -e "SHOW DATABASES;" -E以*、行号、数据库通称Database作为分隔显示数据库
mysql -uroot -p$1 -e "SHOW DATABASES;" -EN以*、行号作为分隔显示数据库
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值