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