!/bin/bash

Time=$(date +%Y%md%H%M%S)

Back_dir="$HOME/mysqlback/${Time}"

function Detect_u_p {

read -p "输入数据库用户名和密码,用空格分隔:" user passwd

mysql -u${user} -p{passwd} -e "show databases" &>/dev/null

[ $? -eq 0 ] && return 0 || return 1

}

function backup {

Detect_u_p

if [ $? -eq 0 ];then

Back_db=($(mysql -u${user} -p{passwd} -e "show databases" 2>/dev/null | awk '/^mys|ora/ {print $1}'))

[ ! -d ${Back_dir} ] && mkdir -p ${Back_dir}

echo "${Time}开始备份"

for back_db in ${Back_db[*]}

do

mysqldump -u${user} -p{passwd} --opt -R ${back_db} > ${Back_dir}/${back_db}.sql &>/dev/null

echo "${back_db}备份完成"

done

mysqldump -u${user} -p{passwd} --opt -R --all-databases --routines > ${Back_dir}/alldb_back.sql &>/dev/null && echo "整库备份完成"

else

echo "用户名或密码输入错误"

fi

}

function imp_db {

Del_db=($(mysql -u${user} -p{passwd} -e "show databases" 2>/dev/null | awk '/^mys|ora/ {print $1}'))

for del_db in ${Del_db[*]}

do

mysql -u${user} -p{passwd} -e "DROP DATABASE ${del_db}" &>/dev/null

done

Rec_db=($(ls -l $1 | egrep -v "总用量|alldb" | awk '{print $9}' | awk -F"." '{print $1}'))

for rec_db in ${Rec_db[*]}

do

mysql -u${user} -p{passwd} -e "CREAT DATABASE ${rec_db}" &>/dev/null && mysql -u${user} -p{passwd} ${rec_db} < $1/{rec_db}.sql &>/dev/null && echo "恢复${rec_db}成功"

done

}

function recover {

Rec_dir=$(find $HOME -type d -name mysqlback)

if [ ! -d ${Rec_dir} ];then

echo "未找到脚本备份的目录"

else

ls -lt {Rec_dir} | egrep -v "总用量" | awk -v Dir="${Rec_dir}" 'BEGIN {print "备份路径为:"} $9 ~ /[0-9]+/ {print NR"."Dir"/"$9}'

Dir_arr=($(ls -lt {Rec_dir} | awk -v Dir="${Rec_dir}" '$9 ~ /[0-9]+/ {print Dir"/"$9}'))

read -p "选择目录为${Dir_arr[0]}中的文件来恢复数据库?(y or n):" yn

if [ "$yn" = "y" -o "$yn" = "Y" -o "$yn" = "yes" ];then

Detect_u_p

[ $? -eq 0 ] && imp_db ${Dir_arr[0]} || echo "用户名或密码输入错误"

else

read -p "用其他备份目录来恢复数据库,请输入对应序号:" digit

if [ ${digit} -gt 0 -a ${digit} -le ${#Dir_arr[*]} ];then

digit=$((${digit}-1))

imp_db ${Dir_arr[${digit}]}

else

echo "输入错误"

fi

fi

fi

}

while [ 1 ]

do

echo -e "1.备份数据库!\n2.恢复数据库!"

read -p "请输入要实现功能的序号:" choice

echo "********************************************************"

case ${choice} in

1) backup;;

2) recover;;

) echo "Byebye!"

exit 1

esac

echo "
*******************************************************"

read -p "Continue?(y or n):" yn

[ "$yn" = "y" -o "$yn" = "Y" ] && continue || break

done

Mysql数据库mys和ora库的备份与恢复脚本的更多相关文章

  1. 第一篇:操纵MySQL数据库(1) - 基于MySQLdb库

    前言 本文讲解在Python语言中使用MySQLdb库操纵MySQL数据库的方法. 准备工作 1. 安装Python和MySQL2. 安装MySQLdb (exe下载地址:http://sourcef ...

  2. MySQL数据库(2)- 库的操作、表的操作、数据的操作、存储引擎的介绍

    一.库的操作 1.系统数据库 执行如下命令,查看系统数据库: mysql> show databases; 参数解释: information_schema: 虚拟库,不占用磁盘空间,存储的是数 ...

  3. MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型

    一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...

  4. MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型

    库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...

  5. mysql数据库-初始化sql建库建表-关联查询投影问题

    下面是一个简易商城的几张表的创建方式 drop database if exists shop ; create database shop CHARACTER SET 'utf8' COLLATE ...

  6. MySQL数据库入门(建库和建表)--陈远波

    建库.建表 1.建库 (1)SQL语句命令建库: Create database数据库名称  (该方法创建的数据库没有设置编码乱码) 1 2 3 4 5 -- 创建数据库时,设置数据库的编码方式 -- ...

  7. MySQL数据库中统计一个库中的所有表的行数?

    今天公司两个远端的数据库主从同步有点问题,查看下wordpress库下所有表的表的条目? mysql> use information_schema;Database changedmysql& ...

  8. mysql数据库之表和库

    SQL:语句主要用于存储数据,查询数据,更新数据和管理关系数据库系统SQL语言有IBM开发,sql语言分为中类型: 1.DDL语句 数据库定义语句:数据库,表,视图,索引,存储过程,例如create, ...

  9. MySQL数据库---库的操作

    MySQL数据库中,以库,表,记录的形式管理所有的数据,安装MySQL数据库的服务器上可以包含多个库,一个库中包含多张表,一张表中包含多条记录.库对应的是文件系统中文件夹的概念,表对应的是文件的概念, ...

随机推荐

  1. flask项目部署到阿里云 ubuntu16.04

    title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...

  2. ADS协议变量配置界面

    ADS协议是倍福产品的通信协议,在双击ADS协议图标后打开如下图的配置窗口. 变量配置表中各列的含义: 报警类型: 脚本: 当设置了报类型时,在运行时如果变量值引发报警时将执行一次脚本.例如 大于报警 ...

  3. 图像实验室 website 项目日志

    day 1 1.问题: 在演示界面选择浏览本地图片,上传以后不显示上传图片 原因:PIL库没有装好,参见之前博客重装 2.问题: 可以上传图片并在网站上显示,但是不能得到运行结果的图片. 原因:没有将 ...

  4. php做的一个简易爬虫

    对于爬虫的好奇好像由来已久,一直在研究python的爬虫,今天得空研究研究php的爬虫 index.php <?php header("Content-Type:text/html;c ...

  5. ELK重难点总结和整体优化配置

    本文收录在Linux运维企业架构实战系列 做了几周的测试,踩了无数的坑,总结一下,全是干货,给大家分享~ 一.elk 实用知识点总结 1.编码转换问题(主要就是中文乱码) (1)input 中的cod ...

  6. Python 中的继承、多态和封装

    涉及问题: Python 中如何实现多继承,会有什么问题? Python 中的多态与静态方法有什么区别? 答案要点如下: Python 中的继承,就是在定义类时,在括号中声明父类,简单示例如下: cl ...

  7. JAVA 调用mysql存储过程

    public class Test { //连接mysql数据库 public static final String DRIVER_CLASS = "com.mysql.jdbc.Driv ...

  8. Java设计模式-模板模式

    介绍:模板模式定义了一个模板抽象类,这个抽象类中定义了方法调用的形式,顺序.子类通过重写对方法进行实现,但是调用方式不能改变. 模板模式中的模板中定义了核心的代码骨架,一些有着不同方式实现的代码放在子 ...

  9. vue实现懒加载的几种方法

    vue实现惰性加载是基于: 1.ES6的异步机制 components: { comp: (resolve, reject) => {} } 2. webpack的代码分割功能 require. ...

  10. [poj1068]Parencodings_模拟

    Parencodings 题目大意:给你一个P序列,表示从左到右的右括号左边有多少左括号,求M序列. 注释:M序列定义为每一个右括号左边最近的没有被之前的右括号匹配的括号之间,有多少已经匹配的括号队对 ...