脚本创建分区表

#!/bin/bash

#确保提供的sql文件名与sql中的表名一致
#使用脚本之前先在/home/mysql/opdir/zfy/新建一个目录例如:mkdir 20171215/sql
#把业务方提供的sql语句放在sql文件夹中

if [ $# != 2 ];then
	echo Usage: $0 zk_port database
	exit 1
fi

let ZK_PORT=$1
DATABASE=$2
MYSQL_PORT=$(($ZK_PORT-901))
let MENU_PORT=$(($ZK_PORT-4001))

DATE=`date +%Y%m%d`

if [ ! -d /home/mysql/opdir/zfy/${DATE}/sql ];then
	echo error:/home/mysql/opdir/zfy/${DATE}/sql directory not exist!
	exit 1
fi

FILE_SQL=/home/mysql/opdir/zfy/${DATE}/sql
cd ${FILE_SQL}
	
	if [ $? != 0 ];then
		echo into current directory fail
		exit 1
	fi

#获取所有文件名称
	mkdir -p /home/mysql/opdir/zfy/${DATE}/tmp_`date +%Y%m%d`
	TMP_DIR=/home/mysql/opdir/zfy/${DATE}/tmp_`date +%Y%m%d`

	for i in `ls ./`;do echo $i|awk -F'.' '{print $1}' >>${TMP_DIR}/${DATABASE}_all_table_name.txt
		if [ $? != 0 ];then
			echo gets the file name error
			exit 1
		fi
	done

#改名tablet
	for i in `ls ./`; do 
		name=`echo $i | awk -F'.' '{print $1}'`; 
			sed -i "s/${name}/${name}__tablet_/g" $i 
		        if [ $? != 0 ];then
        	        	echo change tablet_name error
        	        	exit 1
        		fi
	done

#合并且换行
	for i in `ls ./`;do 
		cat $i >> ${DATABASE}_all_table.sql 
			echo >> ${DATABASE}_all_table.sql 

        	if [ $? != 0 ];then
        	        echo merge file error
        	        exit 1
        	fi
	done	

#复制四份
	for i in `seq 0 3`;do cp ${DATABASE}_all_table.sql ${DATABASE}_all_table_$i.sql
		if [ $? != 0 ];then
			echo copy file 4 fail
			exit 1
		fi
	done
#改名称
	for i in `seq 0 3`;do sed -i 's/tablet_/tablet_'$i'/g' ${DATABASE}_all_table_$i.sql
		if [ $? != 0 ];then
			echo modify the name fail
			exit 1
		fi
	done

#获取zk信息
	cd ${TMP_DIR}
		if [ $? != 0 ];then
                	echo into current directory fail
                	exit 1
        	fi
	mkdir ./zk_cache
	cd ./zk_cache

	for i in `cat ../${
     
     DATABASE}_all_table_name.txt`;do cp /home/mysql/opdir/zfy/zk_template.conf $i.conf
		if [ $? != 0 ];then
			echo get zk information error
			exit 1
		fi
	done

#替换每个文件的表名
	for i in `ls ./`;do  
		name=`echo $i|awk -F'.' '{print $1}'`
			sed -i "s/AAAAA/${name}/g" $i
			if [ $? != 0 ];then
				echo replace table name fail
				exit 1
			fi
	done

#合并到一个文件
	for i in `ls ./`;do cat $i >> zk_cache.conf
		if [ $? != 0 ];then
			echo combine fail
			exit 1
		fi
	done

#追加到zk配置文件中
        cp /home/mysql/menu/menu${MENU_PORT}/conf/zk_cache.baixin.conf /home/mysql/menu/menu${MENU_PORT}/conf/zk_cache.baixin.conf.bak.${DATE}
	sed -i "4 r $TMP_DIR/zk_cache/zk_cache.conf" /home/mysql/menu/menu${MENU_PORT}/conf/zk_cache.baixin.conf
		if [ $? != 0 ];then
			echo error: add to zk_cache.baixin.conf fail!
			exit 1
		fi



if [ $? = 0 ];then
	echo dbproxy create successful
	rm -rf /home/mysql/opdir/zfy/${DATE}/tmp_`date +%Y%m%d`
else
	echo table create failed
	exit 1
fi

#把表导入库
cd ${FILE_SQL}
~/mysql_3100/bin/mysql --defaults-file=~/mysql_${MYSQL_PORT}/etc/user.root.cnf --default-character-set=utf8 -A -e "use ${DATABASE};source ${DATABASE}_all_table_1.sql;source ${DATABASE}_all_table_3.sql;"


#建立完成重启menu
/home/mysql/menu/menu${MENU_PORT}/bin/service.sh stop && /home/mysql/menu/menu${MENU_PORT}/bin/service.sh start
if [ $? = 0 ];then
        echo -e "\033[32m menu restart done \033[0m"
else
        echo -e "\033[31m  menu restart faild \033[0m"
        echo check /home/mysql/menu/menu${MENU_PORT}/conf/zk_cache.baixin.conf
        exit 1
fi

猜你喜欢

转载自blog.csdn.net/shunnianlv/article/details/87938698