脚本简介:
将MySQL数据库dump出后压缩为gz格式。本脚本支持两个参数。第一个参数为数据库类型(myisam,innodb)第二个参数是想要dump的数据库。如果省略第二个参数默认备份所有。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #!/bin/bash #================================================ # Name : dumpdb.sh # Version: 1.0 # Writer : Nathan.Zhou # Date : 2009.06.23 # Modify : # Info : 将MySQL数据库dump出后压缩为gz格式。本脚本支持两个参数。第一 # 个参数为数据库类型(myisam,innodb) 第二个参数是想要dump的 # 数据库。如果省略第二个参数默认备份所有。 # History: # #================================================ . /etc/profile USER="root" PWD="jobkoo" CHARACTER="utf8" DATE=`date +%F` DUMP_MYISAM_ARG=" -u $USER -p$PWD --default-character-set=$CHARACTER --opt --extended-insert=false --triggers -R --hex-blob -x " DUMP_INNODB_ARG=" -u $USER -p$PWD --default-character-set=$CHARACTER --opt --extended-insert=false --triggers -R --hex-blob --single-transaction " MYSQL=`which mysql` MYSQLDUMP=`which mysqldump` SCP=`which scp` # 本地备份后scp到目标主机的路径 TARGET_PATH="/data/db_dump_sql/" TARGET_HOST="210.51.191.183|192.168.108.112" TARGET_TYPE=2 # 选择 TARGET_HOST变量中的第二个主机地址 BAK_FILENAME=rms_db_`date +%F`.sql.gz # argument 1 : mysql data type DATABASE_TYPE=`echo $1 | tr 'A-Z' 'a-z'` # argument 2 : to be dumped database if [ "$2" == "" ];then TO_BAK_DB="all" else TO_BAK_DB=`echo $2 | tr 'A-Z' 'a-z'| sed 's/,/ /g'` fi # 将备份下来的数据库scp到其他主机 function SCPTOHOST() { HOST=`echo $TARGET_HOST|cut -d '|' -f $TARGET_TYPE` $SCP $1 $HOST:$TARGET_PATH } # 检查用户输入的数据库名是否存在,若存在,执行备份数据库操作 function DUMPSELECTDB() { for BASE in $TO_BAK_DB do DB=`$MYSQL -u $USER -p$PWD -e 'show databases;' | grep $BASE` if [ "$DB" == "" ];then echo "You choose database $DB not exist! please try again!" continue else $MYSQLDUMP $1 -B $BASE | gzip >$TARGET_PATH/$BASE\_$DATE.sql.gz SCPTOHOST $TARGET_PATH/$BASE\_$DATE.sql.gz 2>&1>/dev/null fi done } function DUMPALL() { $MYSQLDUMP $1 -A | gzip >$TARGET_PATH/$BAK_FILENAME SCPTOHOST $TARGET_PATH/$BAK_FILENAME 2>&1>/dev/null } # main if [ "$1" == "myisam" ];then if [ "$TO_BAK_DB" == "all" ];then DUMPALL "$DUMP_MYISAM_ARG" else DUMPSELECTDB "$DUMP_MYISAM_ARG" fi elif [ "$1" == "innodb" ];then if [ "$TO_BAK_DB" == "all" ];then DUMPALL "$DUMP_INNODB_ARG" else DUMPSELECTDB "$DUMP_INNODB_ARG" fi else echo "please input correct mysql db type!(myisam or innodb)" exit 1 fi |
近期评论