程序员开发实例大全宝库

网站首页 > 编程文章 正文

分享一个shell脚本--用case来判断备份MySQL数据库

zazugpt 2024-09-07 21:42:26 编程文章 28 ℃ 0 评论

概述

如何用shell脚本的case语句备份MySQL数据库?下面分享一个备份的脚本,大家可以看下。


需求:

利用case语句备份数据库,要求

1.执行db_dump.sh westos (数据库密码)

2.脚本执行后会备份数据库中的所有数据到/mnt/mysqldump目录下

3.备份文件名称为“库名称.sql”,当此文件存在是跳过,并询问动作

4.输入”s“跳过备份,输入”b“备份“库名称.sql”文件为”库名称_backup.sql”,输入”o“覆盖原文件


1.脚本内容:

#!/bin/bash
DATABASE=`mysql -uroot -EN -e "show databases;" | grep -E "^\*|schema$" -v`
mkdir -p /mnt/mysqldump //建立目录
for DATABASE_NAME in $DATABASE
do
 [ -e "/mnt/mysqldump/${DATABASE_NAME}.sql" ] || {
 mysqldump -uroot $DATABASE_NAME > /mnt/mysqldump/${DATABASE_NAME}.sql
 echo -e "${DATABASE_NAME}.sql is backup!!" //文件不存在,备份
 } && { //文件存在时询问动作
 read -p "[S]kip [B]ackup [O]verwrite Please input action: " ACTION
 ACTION=`echo $ACTION | tr 'A-Z' 'a-z'`
 case $ACTION in
 s) //直接跳过
 ;;
 b) //更新名字备份
 mysqldump -uroot $DATABASE_NAME > /mnt/mysqldump/${DATABASE_NAME}_backup.sql
 echo "${DATABASE_NAME}_backup.sql is backup!!"
 ;;
 o) //覆盖备份
 mysqldump -uroot $DATABASE_NAME > /mnt/mysqldump/${DATABASE_NAME}.sql
 echo "${DATABASE_NAME}.sql is overwrite!!"
 ;;
 exit) //退出
 echo "bye"
 exit 0
 ;;
 *) //其他显示错误
 echo error
 esac
 }
done

2.执行

[root@localhost mnt]# sh db_dump.sh 
linux.sql is backup!!
[S]kip [B]ackup [O]verwrite Please input action: s
mysql.sql is backup!!
[S]kip [B]ackup [O]verwrite Please input action: exit
bye
[root@localhost mnt]# sh db_dump.sh 
[S]kip [B]ackup [O]verwrite Please input action: b
linux_backup.sql is backup!!
[S]kip [B]ackup [O]verwrite Please input action: exit
bye
[root@localhost mnt]# sh db_dump.sh 
[S]kip [B]ackup [O]verwrite Please input action: o
linux.sql is overwrite!!
[S]kip [B]ackup [O]verwrite Please input action: exit
bye

大家有空也可以自己测试一下,不过建议改写成自动定时备份好点,比较有实际意义。后面小编会分享更多Linux方面内容,感兴趣的朋友走一波关注哩~

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表