MySQL远程dump单表shell脚本

需求:要求通过shell脚本实现对远程MySQL单表进行mysqldump逻辑备份

输入参数:

主机名(必选)

端口号(可选)

用户名(必选)

密码    (必选)

数据库(必选)

表名     (必选)

where条件(可选)


输出:逻辑备份文件

实现如下:

####################################################
#######功能:通过mysqldump导出数据
#######动作:新增
#######作者:zxy
#######版本:V1.0
#######日期:2014-3-26

#根据实际环境修改MYSQLDUMP BACKDIR SOCKET路径值
MYSQLDUMP=/application/mysql/software/mysql5.5/bin/mysqldump
SOCKET=/tmp/mysql.sock
BACKDIR=/mysqldump/backup

DATE=$(date +%y%m%d)
OLDDATE=$(date -d "-1 days" +%y%m%d)


#检查参数
if [ $# -lt 1 ]; then
	echo "Please input parameter"
	echo "-h 需要备份数据库主机名,必选参数"
	echo "-P 数据库端口号,可选参数,默认为3306"
	echo "-u 登录数据库用户名,必选参数"
	echo "-p 登录数据库密码,必须参数"
	echo "-d 需要备份的数据库名,必选参数" 
	echo "-t 需要备份的表名,必须参数"
	echo "-w 指定where过滤条件,可选参数"
	exit 1
fi


#异常处理函数
function error_exit {
	echo  " Specify the parameter $1, please check input parameter"
	exit 1
}

#捕获参数
while getopts :h:s:u:p:d:t:w: opt
do 
    case $opt in
       h) HOST=$OPTARG
	   echo "host = ${HOST}"
           ;;
       s)  PORT=$OPTARG
	   echo "port = ${PORT}"
           ;;
       u) USERNAME=$OPTARG
	  echo "username = ${USERNAME}"
	   ;;
       p) PASSWORD=$OPTARG
	  echo "password = ${PASSWORD}"
           ;;
       d) DBNAME=$OPTARG
	  echo "database name = ${DBNAME}"
	  ;;
       t) TABLES=$OPTARG
	  echo "tables = ${TABLES}"
	  ;;
       w) WHERE=$OPTARG
	  echo "where = ${WHERE}"
	  ;;
      \?) echo "error,please check input"
           exit  1
           ;;
    esac
done

####判断主机名、用户、密码、数据库、表名不能为空
if [ -z "${HOST}" ]; then
	error_exit "-h "
fi

#没有指定参数的话,赋值默认端口号3306
if [ -z "${PORT}" ]; then 
        PORT=3306
	echo "PORT=3306"
fi

if [ -z "${USERNAME}" ]; then 
ST} -P${PORT}
        error_exit "-u"
fi

if [ -z "${PASSWORD}" ]; then
        error_exit "-p"
fi

if [ -z "${DBNAME}" ]; then 
        error_exit "-d"
fi

if [ -z "${TABLES}" ]; then
        error_exit "-t"
fi


#备份文件存放路径管理
if [ ! -d ${BACKDIR} ]; then

	mkdir -p ${BACKDIR}

fi

if [ ! -d ${BACKDIR}/${DATE} ]; then

	mkdir ${BACKDIR}/${DATE}

fi



#备份文件名词
BACKUP_NAME=${BACKDIR}/${DATE}/${HOST}_${PORT}_${DBNAME}_${TABLES}_backup_${DATE}.sql

#拼接mysqldump命令
CMD="${MYSQLDUMP} -h${HOST} -P${PORT} -u${USERNAME} -p${PASSWORD} -S${SOCKET} ${DBNAME} ${TABLES}"
if [ -n "${WHERE}" ]; then
	CMD="${CMD} -w${WHERE}"
	echo "${CMD}"
fi

CMD="${CMD} --single-transaction --master-data=2" 
echo ${CMD}

#执行备份命令
${CMD} > ${BACKUP_NAME}
#判断备份命令是否执行成功
if [ $? -eq 0 ]; then
	echo "The return value $?"
	echo "The table ${DBNAME}.${TABLES} backup success"
	exit 0;
else
	echo "The return value $?"
	echo "The table ${DBNAME}.${TABLES} backup fail"
	exit 1;
fi


注意事项:

1.路径修改
在脚本的开始,需要指定shell脚本运行环境上的mysqldump路径,以及mysql连接sock文件路径,需要指定备份文件存放的目录BACKDIR,如下:
MYSQLDUMP=/application/mysql/software/mysql5.5/bin/mysqldump
SOCKET=/tmp/mysql.sock
BACKDIR=/mysqldump/backup


2.输入参数解释:
-h 需要备份数据库主机名,必选参数
-P 数据库端口号,可选参数,默认为3306
-u 登录数据库用户名,必选参数
-p 登录数据库密码,必须参数
-d 需要备份的数据库名,必选参数
-t 需要备份的表名,必须参数
-w 指定where过滤条件,可选参数


3.备份文件路径
备份文件存放目录/当前日期/主机IP_端口号_数据库名_表名_backup_${DATE}.sql

4.命令示例:

sh mysqldump.sh -h10.10.10.1 -utest -ptest -dzxy -ttest_mysqldump

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值