Mysql数据库mys和ora库的备份与恢复脚本
!/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库的备份与恢复脚本的更多相关文章
- 第一篇:操纵MySQL数据库(1) - 基于MySQLdb库
前言 本文讲解在Python语言中使用MySQLdb库操纵MySQL数据库的方法. 准备工作 1. 安装Python和MySQL2. 安装MySQLdb (exe下载地址:http://sourcef ...
- MySQL数据库(2)- 库的操作、表的操作、数据的操作、存储引擎的介绍
一.库的操作 1.系统数据库 执行如下命令,查看系统数据库: mysql> show databases; 参数解释: information_schema: 虚拟库,不占用磁盘空间,存储的是数 ...
- MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型
一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...
- MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型
库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...
- mysql数据库-初始化sql建库建表-关联查询投影问题
下面是一个简易商城的几张表的创建方式 drop database if exists shop ; create database shop CHARACTER SET 'utf8' COLLATE ...
- MySQL数据库入门(建库和建表)--陈远波
建库.建表 1.建库 (1)SQL语句命令建库: Create database数据库名称 (该方法创建的数据库没有设置编码乱码) 1 2 3 4 5 -- 创建数据库时,设置数据库的编码方式 -- ...
- MySQL数据库中统计一个库中的所有表的行数?
今天公司两个远端的数据库主从同步有点问题,查看下wordpress库下所有表的表的条目? mysql> use information_schema;Database changedmysql& ...
- mysql数据库之表和库
SQL:语句主要用于存储数据,查询数据,更新数据和管理关系数据库系统SQL语言有IBM开发,sql语言分为中类型: 1.DDL语句 数据库定义语句:数据库,表,视图,索引,存储过程,例如create, ...
- MySQL数据库---库的操作
MySQL数据库中,以库,表,记录的形式管理所有的数据,安装MySQL数据库的服务器上可以包含多个库,一个库中包含多张表,一张表中包含多条记录.库对应的是文件系统中文件夹的概念,表对应的是文件的概念, ...
随机推荐
- NancyFX 第八章 内容协商
在Web框架的范畴内,一切都是基于REST的-- 从返回包含CSS.JavaScript的网页的路由路径,到那些返回JSON数据的URL. 无论你怎么看它,两者都是必须的.我们使用一组URL来呈现UR ...
- 32.Django form组件
Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 创建Form类时,主要涉及到 [ ...
- C# Redis实战(一)
一.初步准备 Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库.Redis的出现,很大程度补偿了memcached这类key/va ...
- C++对一组pair数据进行排序(sort函数的使用)
最近在写一个算法的时候,把一些数据存在了pair中,并且需要根据pair中first或者second的值对这些数据进行排序.比如:输入数据(1,2).(4,2).(3,3).(2,1)根据first的 ...
- NOIP2015 D2T3 洛谷2680 BZOJ4326 运输计划 解题报告
前言:个人认为这是历年NOIP中比较简单的最后一题了,因此将自己的思路与大家分享. 题目大意: 给一棵无根树,给出m条路径.允许将树上的一条边的权值改为0.求m条路径长度最大值的最小值.n,m< ...
- Vue2.0+Node.js+MongoDB全栈打造商城系统 免费下载
<ignore_js_op> 课程目录||--第01章 课程介绍| 01-01 课程-导学.mp4| 01-02 前端框架回顾.mp4| 01-03 vue概况以及核心思 ...
- IntelliJ Idea常用的快捷键
以下是IntelliJ Idea2017版的,基本上不会有什么变化 IntelliJ Idea这个编译器现在非常流行,他强大的快捷键非常好用,相比于eclipse,IntelliJ Idea界面也比e ...
- [HAOI2016] 放棋子及错排问题
题目 Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要求你放N个棋子也满足 ...
- react开发
webpack.config.js var webpack=require("webpack"); var htmlWebpackPlugin=require('html-webp ...
- poj-1146 ID codes
Description It is 2084 and the year of Big Brother has finally arrived, albeit a century late. In or ...