数据库中备份命令语句(如何利用case备份数据库--)
如何用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方面内容,感兴趣的朋友走一波关注哩~
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com