Mysql数据库备份脚本、分单库,全部备份

马上就要下班了,提前祝大家十一快乐,吃好玩好休息好!
image

因为我mysql安装的时候没有去源码安装,所以如果你是使用源码安装,或者PATH中没有mysql的bin程序环境变量的话,请自己在下面脚本内自行添加。
在输入编号ID的时候不要输入特殊字符,我没做过滤,到时脚本会报错,还有没有做一直脚本循环,写的比较着急,因为今天要下班啦哈哈。不知道
有没有办法处理这个问题,我以前好像处理过,不过好久不写都忘记了!

这个脚本满意的地方是,没有用临时文件处理数据,而是采用数组的方式。看网上几乎没有人这样去存储数据到数组,也算是自己一个一个去做实验的结果吧!希望能给没有用过这种方式的朋友多一个方向吧!

#!/bin/bash 
USERNAME=root 
PASSWORD= 
DATA_LIST="" 
declare -a ARR_LIST 
DATABASE_NUM=`mysqlshow -u ${USERNAME} -p${PASSWORD} |awk -F ' ' '{ print $2}'|grep -v -E "^Databases|^$|#" |wc -l` 
  
for((i=1;i< =${DATABASE_NUM};i++)); do 
   { 
   DATA_LIST=${DATA_LIST}' '`mysqlshow -u ${USERNAME} -p${PASSWORD} |awk -F ' ' '{ print $2}'|grep -v -E "^Databases|^$|#" |awk 'NR=='${i}'{print $1}' `; 
   } 
   done 
I=$DATABASE_NUM 
ARR_LIST=( ${DATA_LIST} ) 
clear 
echo "Do not enter special characters" 
echo "Please access numbers to back up the database, or " 
echo "" 
while [ "$I" -gt "0" ] 
do 
  ((I=$I-1)) 
  echo -e "\033[40;37;4m $I \033[0m --> \033[40;37;4m${ARR_LIST[$I]}\033[0m;" 
done 
echo "" 
while  [[ "${ID}" -gt "${DATABASE_NUM}" ]] || [[ -z ${ID} ]] 
do 
  echo -n -e "\033[31;1m Please enter the database ID:\033[0m" ;read ID 
        if [[ ${ID} == all ]] || [[ ${ID} == ALL ]]; 
        then 
                mysqldump -u ${USERNAME} -p${PASSWORD} --all-database > mysql_date_all_`date +%y%m%d%H%m`.sql 
        fi 
done 
  mysqldump -u ${USERNAME} -p${PASSWORD} ${ARR_LIST[$ID]} > ${ARR_LIST[$ID]}_`date +%Y%m%d%H%M`.sql




- THE END -
版权声明:
转载原创文章请注明,文章出处:http://kinggoo.com
原文地址:http://kinggoo.com/app-mysql-backup.htm
发表评论?

3 条评论。

发表评论