實現功能: 能夠按庫名導出一個mysql實例中的表,視圖,存儲過程/函數,觸發器,事件mysql
用法:sql
1. 將腳本保存爲dump.shbash
2. sh dump.sh 備份路徑 用戶 密碼 IP 端口ide
例:sh dump.sh /backup/bjdb root root 127.0.0.1 3306函數
############################################## # Function: DUMP MYSQL TABLE, PROCEDURE,VIEW,TRIGGER,EVENT # Date: 2015-01-21 # Author: Liang Wei # Mail: liangweione@gmail.com # Version: 1.0 ########################################################### #DEFINE VARIABLES MYSQL=`which mysql` MYSQLDUMP=`which mysqldump` GZIP=`which gzip` BACKUP_DIRECTORY=$1 V_USERNAME=$2 V_PASSWORD=$3 V_HOST=$4 V_PORT=$5 MYCMD="$MYSQL -u$V_USERNAME -p$V_PASSWORD -h$V_HOST -P$V_PORT " DUMP_TB="$MYSQLDUMP -u$V_USERNAME -p$V_PASSWORD -h$V_HOST -P$V_PORT --compact -d" DUMP_TRIGGER="$MYSQLDUMP -u$V_USERNAME -p$V_PASSWORD -h$V_HOST -P$V_PORT --triggers \ --no-create-info --no-data --no-create-db --skip-opt" DUMP_PROC="$MYSQLDUMP -u$V_USERNAME -p$V_PASSWORD -h$V_HOST -P$V_PORT --routines \ --no-create-info --no-data --no-create-db --skip-opt --skip-triggers" DUMP_EVENTS="$MYSQLDUMP -u$V_USERNAME -p$V_PASSWORD -h$V_HOST -P$V_PORT --events \ --no-create-info --no-data --no-create-db --skip-opt --skip-triggers" #echo MYSQL=$MYSQL #echo MYSQLDUMP=$MYSQLDUMP #echo GZIP=$GZIP # VALIDATE INPUT ARGUMENTS if [ "$#" -ne 5 ]; then echo "Usage: $0 <BACKUP_DIRECTORY> <V_USERNAME> <V_PASSWORD> <V_HOST> <V_PORT>" exit 1; fi # VALIDATE BACKUP DIR BACKUP_DIR="$1" if [ ! -d $BACKUP_DIR ]; then echo "$BACKUP_DIR does not exist" exit 1; fi DUMP_DIR="$BACKUP_DIR/`date +%F`" if [ ! -d $DUMP_DIR ]; then mkdir -p $DUMP_DIR if [ ! -d $DUMP_DIR ]; then echo "Failed to create backup dir $DUMP_DIR" exit 1; fi fi for DB in `$MYCMD -N -e "show databases" | grep -v 'Database\|performance_schema\|information_schema'` # for DB in sakila do mkdir -p $DUMP_DIR/$DB/{table,view,trigger,proc,event} # Dump table define for TB in `$MYCMD -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES \ WHERE TABLE_SCHEMA IN('${DB}') AND ENGINE IS NOT NULL AND ENGINE NOT IN('CSV');" ` do BK_FILE=$DUMP_DIR/$DB/table/${TB}.sql $DUMP_TB $DB $TB >$BK_FILE done #Dump view for VW in `$MYCMD -N -e "SELECT table_name from information_schema.views where TABLE_SCHEMA in('${DB}')" ` do $DUMP_TB $DB $VW > $DUMP_DIR/$DB/view/${VW}.sql done #Dump triggers $DUMP_TRIGGER $DB >$DUMP_DIR/$DB/trigger/${DB}_trigger.sql #Dump routines $DUMP_PROC $DB >$DUMP_DIR/$DB/proc/${DB}_proc_function.sql #Dump events $DUMP_EVENTS $DB >$DUMP_DIR/$DB/event/${DB}_event.sql