mysql mysqldump备份表脚本

#!/bin/bash #对mysql数据库进行制定数据库表备份
#$1: 0-备份,1-表恢复 
#$2: 数据库 
#$3: 表名 
#$4: 表名 
#... 
menu_func()
{
 cat <<EOF 
    `echo "=============================="` 
    `echo -e "1、ip:192.168.0.23, port:60012\n"` 
    `echo -e "2、ip:192.168.0.22, port:60010\n"` 
    `echo -e "3、ip:192.168.0.20, port:60009\n"` 
    `echo "=============================="` 
EOF
} 
menu_func read -p "请选择数据库(1/2/3):" num 
if [ $num -ne 1 ] && [ $num -ne 2 ] && [ $num -ne 3 ];then
    echo -e "选择错误,请重新选择\n" 
    exit -1 
fi 
case $num in 
    1) 
        DB_HOST="192.168.0.23"
        DB_USER="root" 
        DB_PWD="123456" 
        DB_PORT="60012" 
    ;; 
    2)
        DB_HOST="192.168.0.22" 
        DB_USER="root" 
        DB_PWD="123456"
        DB_PORT="60010" ;; 
    3) 
        DB_HOST="192.168.0.20"
        DB_USER="root" 
        DB_PWD="123456"
        DB_PORT="60009" 
    ;; 
esac 

OPER_FLG=$1; 
DB_NAME=$2; 
DATE=`date +'%Y%m%d'`
PARM_LEN=$# 
if [ $# -lt 3 ];then
 echo "Use:$0 备份/恢复标志[0-备份,1-恢复] 数据库名 表1 表2 表3 ..." 
    exit -1
fi 
#备份表存放目录
BACK_DIR=~/sql/${DATE}
if [ ! -d ${BACK_DIR} ];then 
    mkdir -p ${BACK_DIR} 
fi
j=0 
table_arry=() 
for((i=0;i<${PARM_LEN};i++)) 
do
    if [ $i -lt 2 ];then 
        shift continue
    fi 
    table_arry[j]=$1 
    j=$(($j+1)) 
    shift 
done 

ARRY_LEN=${#table_arry[@]} 
for((i=0;i<${ARRY_LEN};i++)) 
do
 if [ ${OPER_FLG} -eq 0 ];then 
        mysqldump -h${DB_HOST} -u${DB_USER} -p${DB_PWD} -P${DB_PORT} --set-gtid-purged=off ${DB_NAME} ${table_arry[i]} > ${BACK_DIR}/${table_arry[i]}.sql 
 elif [ ${OPER_FLG} -eq 1 ];then 
        mysql -h${DB_HOST} -u${DB_USER} -p${DB_PWD} -P${DB_PORT} ${DB_NAME} -e "source ${BACK_DIR}/${table_arry[i]}.sql"
 fi
done 

猜你喜欢

转载自blog.csdn.net/codehouse/article/details/80424448