mydumper备份脚本
来源:互联网 发布:淘宝的火麻叶能飞 编辑:程序博客网 时间:2024/04/30 11:47
#!/bin/bash#ocpyang@126.com########脚本说明#1.默认读取当前目录下database.txt文件,备份部分数据库#2.如果database.txt为空,则执行全备或备份指定的个别数据库#set parameter mydumper=/usr/local/bin/mydumper #根据自己的实际情况设置dir_backup=/backup #根据自己的实际情况设置mysql_host=localhost #根据自己的实际情况设置mysql_port=33306 #根据自己的实际情况设置mysql_user=root #根据自己的实际情况设置mysql_pass=123456 #根据自己的实际情况设置now_date=`date +%Y%m%d%H%M`if [ ! -d $dir_backup ]; then echo -e "\e[1;31m 保存备份的主目录:$dir_backup不存在,将自动新建. \e[0m" mkdir -p ${dir_backup}fiexport black='\033[0m'export boldblack='\033[1;0m'export red='\033[31m'export boldred='\033[1;31m'export green='\033[32m'export boldgreen='\033[1;32m'export yellow='\033[33m'export boldyellow='\033[1;33m'export blue='\033[34m'export boldblue='\033[1;34m'export magenta='\033[35m'export boldmagenta='\033[1;35m'export cyan='\033[36m'export boldcyan='\033[1;36m'export white='\033[37m'export boldwhite='\033[1;37m'cecho ()## -- Function to easliy print colored text -- ### Color-echo.# 参数 $1 = message# 参数 $2 = color{local default_msg="No message passed."message=${1:-$default_msg}# 如果$1没有输入则为默认值default_msg.color=${2:-black}# 如果$1没有输入则为默认值black.case $color inblack) printf "$black" ;;boldblack) printf "$boldblack" ;;red) printf "$red" ;;boldred) printf "$boldred" ;;green) printf "$green" ;;boldgreen) printf "$boldgreen" ;;yellow) printf "$yellow" ;;boldyellow) printf "$boldyellow" ;;blue) printf "$blue" ;;boldblue) printf "$boldblue" ;;magenta) printf "$magenta" ;;boldmagenta) printf "$boldmagenta" ;;cyan) printf "$cyan" ;;boldcyan) printf "$boldcyan" ;;white) printf "$white" ;;boldwhite) printf "$boldwhite" ;;esac printf "%s\n" "$message" tput sgr0# tput sgr0即恢复默认值 printf "$black"return}cechon ()# Color-echo.# 参数1 $1 = message# 参数2 $2 = color{local default_msg="No message passed."# Doesn't really need to be a local variable.message=${1:-$default_msg}# 如果$1没有输入则为默认值default_msg.color=${2:-black}# 如果$1没有输入则为默认值black.case $color inblack)printf "$black" ;;boldblack)printf "$boldblack" ;;red)printf "$red" ;;boldred)printf "$boldred" ;;green)printf "$green" ;;boldgreen)printf "$boldgreen" ;;yellow)printf "$yellow" ;;boldyellow)printf "$boldyellow" ;;blue)printf "$blue" ;;boldblue)printf "$boldblue" ;;magenta)printf "$magenta" ;;boldmagenta)printf "$boldmagenta" ;;cyan)printf "$cyan" ;;boldcyan)printf "$boldcyan" ;;white)printf "$white" ;;boldwhite)printf "$boldwhite" ;;esac printf "%s" "$message" tput sgr0# tput sgr0即恢复默认值 printf "$black"return}judegedate_01="judegedate01.`date +%y%m%d%h%m%s`.txt"schema_judege01="select schema_name from information_schema.schemata ;"mysql -h${mysql_host} -P${mysql_port} -u${mysql_user} -p${mysql_pass} -e"${schema_judege01}" >${judegedate_01}echo -e "\e[1;31m The databases name in current instance is: \e[0m"awk 'NR==2,NR==0 { print $1}' ${judegedate_01}echo ""#Get the current script path and create a file named database.txt #in order to save the backup databases name.filepath=$(cd "$(dirname "$0")"; pwd)if [ ! -s "${filepath}/database.txt" ];then echo "将在当前目录下新建databases.txt."touch ${filepath}/database.txtecho "#Each line is stored a valid database name">${filepath}/database.txtchmod 700 ${filepath}/database.txtfi#Remove the comment lineawk 'NR==2,NR==0 { print $1}' ${filepath}/database.txt> ${filepath}/tmpdatabases.txt#To determine whether a file is emptyif [ -s ${filepath}/tmpdatabases.txt ];then#开始时间started_time=`date +%s`echo "备份开始时间:${started_time}"db_num00=`awk 'NR==1,NR==0 { print NR}' ${filepath}/tmpdatabases.txt |tail -n1`echo "此次将备份${db_num00}个数据库:"echoor_dbnum=0 for i in `awk 'NR==1,NR==0 { print $1}' ${filepath}/tmpdatabases.txt`; do((or_dbnum+=1))mysql_databases=$idb_dpname=$dir_backup/${i}.${now_date} echo -e "\e[1;32m mydumper开始备份第${or_dbnum}个数据库$i..... \e[0m"sleep 2echo -e "\e[1;32m mydumper玩命备份中.....稍等片刻.... \e[0m"${mydumper} \--database=${mysql_databases} \--host=${mysql_host} \--port=${mysql_port} \--user=${mysql_user} \--password=${mysql_pass} \--outputdir=${db_dpname} \--no-schemas \--rows=50000 \--build-empty-files \--threads=4 \--compress-protocol \--kill-long-queries if [ "$?" -eq 0 ];thenecho -e "\e[1;32m mydumper成功将数据库$i备份到:${db_dpname}. \e[0m"echo elseecho -e "\e[1;31m 备份异常结束. \e[0m"fi doneelseipname=''read -p "Please input you want to backup database name[a|A:ALL]:" ipname#开始循环 #开始时间started_time=`date +%s`echo "备份开始时间:${started_time}"if [ "$ipname" = "a" -o "$ipname" = "A" ];then db_num=`awk 'NR==2,NR==0 { print NR-1}' ${judegedate_01} |tail -n1` echo "此次将备份${db_num}个数据库:" echo mysql_databases=$ipname or_dbnum=0 for i in `awk 'NR==2,NR==0 { print $1}' ${judegedate_01}`; do ((or_dbnum+=1))mysql_databases=$idb_dpname=$dir_backup/${i}.${now_date} echo -e "\e[1;32m mydumper开始备份第${or_dbnum}个数据库$i..... \e[0m"sleep 2echo -e "\e[1;32m mydumper玩命备份中.....稍等片刻.... \e[0m"${mydumper} \--database=${mysql_databases} \--host=${mysql_host} \--port=${mysql_port} \--user=${mysql_user} \--password=${mysql_pass} \--outputdir=${db_dpname} \--no-schemas \--rows=50000 \--build-empty-files \--threads=4 \--compress-protocol \--kill-long-queries if [ "$?" -eq 0 ];thenecho -e "\e[1;32m mydumper成功将数据库$i备份到:${db_dpname}. \e[0m"echo elseecho -e "\e[1;31m 备份异常结束. \e[0m"fi doneelse echo "此次备份的数据库名为:$ipname"echo #开始时间STARTED_TIME=`date +%s`mysql_databases=$ipnamedb_dpname=$dir_backup/${mysql_databases}.${now_date}judegedate_02="judegedate02.`date +%y%m%d%h%m%s`.txt"schema_judege02="select schema_name from information_schema.schemata where schema_name='${ipname}';"mysql -h${mysql_host} -P${mysql_port} -u${mysql_user} -p${mysql_pass} -e"${schema_judege02}" >${judegedate_02}if [ ! -s "${judegedate_02}" ];thenecho " "echo -e "\e[1;31m ******************************************************************* \e[0m"echo -e "\e[1;31m !o(︶︿︶)o! The schema_name ${ipname} not exits,pleae check . ~~~~(>_<)~~~~ \e[0m"echo -e "\e[1;31m ********************************************************************** \e[0m"echo " "rm -rf ${judegedate_01}rm -rf ${judegedate_02}exit 0elseecho -e "\e[1;32m mydumper开始备份请稍等..... \e[0m"sleep 2echo -e "\e[1;32m mydumper玩命备份中.....稍等片刻.... \e[0m"${mydumper} \--database=${mysql_databases} \--host=${mysql_host} \--port=${mysql_port} \--user=${mysql_user} \--password=${mysql_pass} \--outputdir=${db_dpname} \--no-schemas \--rows=50000 \--build-empty-files \--threads=4 \--compress-protocol \--kill-long-queries if [ "$?" -eq 0 ];thenecho -e "\e[1;32m mydumper成功将数据库备份到:${db_dpname}. \e[0m"elseecho -e "\e[1;31m 备份异常结束. \e[0m"fifi# 循环结束fifirm -rf ${judegedate_01}rm -rf ${judegedate_02}rm -rf ${filepath}/tmpdatabases.txtecho "完成于: `date +%F' '%T' '%w`"######################################################################################################################执行结果如下:#####################The databases name in current instance is: information_schemamysqlperformance_schematestwindmpiaompadminmplogPlease input you want to backup database name[a|A:ALL]:A备份开始时间:1431574874此次将备份8个数据库: mydumper开始备份第1个数据库information_schema..... mydumper玩命备份中.....稍等片刻.... mydumper成功将数据库information_schema备份到:/backup/information_schema.201505141141. mydumper开始备份第2个数据库mysql..... mydumper玩命备份中.....稍等片刻.... mydumper成功将数据库mysql备份到:/backup/mysql.201505141141. mydumper开始备份第3个数据库performance_schema..... mydumper玩命备份中.....稍等片刻.... mydumper成功将数据库performance_schema备份到:/backup/performance_schema.201505141141. mydumper开始备份第4个数据库test..... mydumper玩命备份中.....稍等片刻.... mydumper成功将数据库test备份到:/backup/test.201505141141. mydumper开始备份第5个数据库wind..... mydumper玩命备份中.....稍等片刻.... mydumper成功将数据库wind备份到:/backup/wind.201505141141. mydumper开始备份第6个数据库mpiao..... mydumper玩命备份中.....稍等片刻.... mydumper成功将数据库mpiao备份到:/backup/mpiao.201505141141. mydumper开始备份第7个数据库mpadmin..... mydumper玩命备份中.....稍等片刻.... mydumper成功将数据库mpadmin备份到:/backup/mpadmin.201505141141. mydumper开始备份第8个数据库mplog..... mydumper玩命备份中.....稍等片刻.... mydumper成功将数据库mplog备份到:/backup/mplog.201505141141. 完成于: 2015-05-14 11:42:05 4
1 0
- mydumper备份脚本
- mydumper备份脚本
- MySQL备份工具mydumper备份
- 【mysql】mydumper多线程备份恢复
- mydumper备份mysql数据库示例
- mydumper备份原理和使用方法
- MySQL多线程备份工具 mydumper
- MySQL逻辑备份利器-mydumper
- mydumper备份原理和使用方法
- mydumper
- 利用mydumper和myloader备份恢复mysql
- 并发逻辑备份工具mydumper实践
- mysql备份工具 :mysqldump mydumper Xtrabackup 原理
- mysqldump,mydumper以及xtrabackup备份流程简述
- mydumper备份数据库详解(已详细说明)
- mysqlpump与mysqldump及mydumper的备份速度测试
- CentOS6.7_Mysql5.6_使用mydumper全库备份
- MySQL高效的逻辑备份工具mydumper & myloader
- double.epsilon
- SafeSEH 对异常处理的保护原理
- 网页通过webview调用Android的图片或文件选择
- proxmox介绍
- Java位运算在程序设计中的使用:位掩码(BitMask)
- mydumper备份脚本
- Android Menu的overflow在不同版本上的控制显示
- SQL注入全过程
- GCD之任务分发函数进阶
- poj -- 3352 Road Construction(边双连通)
- css 布局最后一个字无法进入上一行
- 解决Xcode模拟器attaching卡死问题
- RESTful API 设计指南
- 抓包工具Fidder详解