mysql備份數據庫,導入數據sql

#!/bin/bash


#scripts :yzg


#set -x



sql=/home/scripts

dbuser=root

dbpasswd=yzg1314520

nowtime=$(date +%Y%m%d%H%M)

serverlist=`cat /home/serverlist | awk  '{print $2}'`



if [ -d $sql/$P/mysqlbak ];

                then

                        echo "Directory exist"

                else

                        echo "not is a Directory,please mkdir Directory"

                        mkdir $sql/$P/mysqlbak

                                if [ $? == 0 ] && [ -d $sql/$P/mysqlbak ];

                                then

                                        echo "create Directory success"

                                fi

                fi




sql_tar_export()

{

        cd $sql/$P/mysqlbak

        mysqldump -u$dbuser -p$dbpasswd $dbname -R test_1 > $nowtime.test_1.sql

        tar -zcf $nowtime.test_1.Full.tar.gz $nowtime.test_1.sql

        rm -rf $nowtime.test_1.sql

        find $sql/$P/mysqlbak -name "*.test_1.Full.tar.gz" -mtime +1 -exec rm -rf {} \;

        if [ "$?" == "0" ];

        then

                echo "已經正確備份,並刪掉已解壓的sql"

        fi

}


sql_tar_input()

{

        cd $sql/$P/mysqlbak

        mysql -u$dbroot -p$dbpasswd -e 'drop database test_1'

        mysql -u$dbroot -p$dbpasswd -e 'create database test_1'

        if [ -a $sql/$port/mysqlbak/*.sql ];

        then

               mv  $sql/$port/mysqlbak/*.sql /tmp

        db_sql=`ls -tr /home/scripts/$P/mysqlbak/|tail -n 1`

        tar -xf ${db_sql}  -C $sql/$P/mysqlbak/

        newname=`echo ${db_sql} | awk -F "." '{print $1"."$2}'`.sql

        echo $newname

        mysql  -u$dbuser -p$dbpasswd test_1 < $newname


        fi

                if [ "$?" == "0" ];

        then

                echo "正確導入sql"

        fi

}


case "$1" in

        8[0-9][0-9][0-9]|all)

                ;;

        *)

                echo "請輸入正確數字"   

                exit 0

                ;;

esac


case "$2" in

        export|input)

        ;;

        *)

                echo "請輸入正確字符"

                exit 0

        ;;

esac


port=$1


if [ "$port"  != "all" ] && [ "$2" == "export" ];

then

        cd $sql/$port/mysqlbak

        mysqldump -u$dbuser -p$dbpasswd $dbname -R test_1 > $nowtime.test_1.sql

        tar -zcf $nowtime.test_1.Full.tar.gz $nowtime.test_1.sql

        rm -rf $nowtime.test_1.sql

        find $sql/$P/mysqlbak -name "*.test_1.Full.tar.gz" -mtime +1 -exec rm -rf {} \;

        if [ "$?" == "0" ];

        then

                echo "已經正確備份,並刪掉已解壓的sql"

        fi



elif [ "$port" != "all" ] && [ "$2" == "input" ];

then

        cd $sql/$port/mysqlbak

        mysql -u$dbroot -p$dbpasswd -e 'drop database test_1'

        mysql -u$dbroot -p$dbpasswd -e 'create database test_1'

        if [ -a $sql/$port/mysqlbak/*.sql ];

        then

                mv  $sql/$port/mysqlbak/*.sql /tmp

        fi


        db_sql=`ls -tr /home/scripts/$port/mysqlbak/|tail -n 1`

        tar -xf ${db_sql}  -C $sql/$port/mysqlbak/

        newname=`echo ${db_sql} | awk -F "." '{print $1"."$2}'`.sql

        echo $newname

        mysql  -u$dbuser -p$dbpasswd test_1 < $newname



        if [ "$?" == "0" ];

        then

                echo "已經正確導入sql到數據庫"

        else

                echo "導入失敗,檢查原因"

        fi


else [ "$port" == "all" ] && [ "$2" == "export" ] || [ "$2" == "input" ]

        for P in $serverlist

        do


                cd $sql/$P/mysqlbak

                case "$2" in

                        export)

                                sql_tar_export

                        ;;

                        input)

                                sql_tar_input

                        ;;



                esac

        done

fi



exit 0


#set +x


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章