mysqldump导出table,view,trigger,routines,events

实现功能: 可以按库名导出一个mysql实例中的表,视图,存储过程/函数,触发器,事件

 

用法:

1. 将脚本保存为dump.sh

2. sh dump.sh  备份路径  用户 密码 IP  端口

 

例:sh  dump.sh  /backup/bjdb   root  root 127.0.0.1  3306

 

#!/bin/bash

###########################################################
# 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

done


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值