mycat DDL的项目实践

  • 原理 

https://blog.csdn.net/u011983531/article/details/79191539

Mycat支持的常见的DDL语句的。

  • CREATE:create index
  • DROP:drop index
  • TRUNCATE:truncate table
  • ALTER:alter table

根据测试,在mycat里,进行了分库的表,是不支持 create table操作的。比如下表

                <table name="dw_equip_imsi_count" primaryKey="id" dataNode="cn$1-365" rule="pdas-dateRule-day" />
                <table name="dw_permanent_imsi" primaryKey="id" dataNode="dn$1-8" rule="dn-imsi-StringEx"  />
                <table name="dw_permanent_daily_imsi" primaryKey="id" dataNode="cn$1-365" rule="pdas-dateRule-day" />

http://10.30.120.1/omc-code/GiSecurity/blob/master/src/sql/large_getUpdateSqllist.sh

(1)如果是.sql文件,写入临时文件,后期用 mysql -u -p -P8066 < $myfile进行导入

(2) 如果 是sh 文件,直接对sh 文件进行执行

         注: 在sh 里,将建表语句 ,写入txt ,防止 sh文件里`` 这个符号 引起 命令执行失败。

(3) 如果是.xml 文件,则意味着mycat里的 rule.xml schema.xml需要更新。

        注: 特例186环境,使用docker mysql3310取代了3306 里的pdas静态表,所以在这里作了判断 ,如果存在3310则不进行schema.xml替换 ,自家环境,手动处理。 

  • 代码 
#echo "source /mnt/server/apache-tomcat-8.5.40/webapps/pdas/WEB-INF/classes/sql/largeUpdate/$i/${ff}" >>$myFile
if [ "${ff##*.}"x = "sql"x ];then
  echo "source $file_root/$i/${ff}" >>$myFile
elif [ "${ff##*.}"x = "sh"x ];then
  chmod +x $file_root/$i/${ff}
  cd $file_root/$i
  echo " i will exec  $file_root/$i/${ff}"
  sh  $file_root/$i/${ff}
elif [ "${ff##*.}"x = "xml"x ];then

  docker ps|grep mysql3310| tee /tmp/mysql3310.log
  cat /tmp/mysql3310.log | grep -w mysql3310
  rr=$?
  if [ $rr -ne 0 ]; then
   echo "没有发现mysql3310"
   echo $rr
  else
    echo "ok!,mysql3310 exists! don't cover the xml of mycat !"
    echo $rr
    continue
  fi
  
  tt=`sed -n '/mycatType=/p' /alidata/globalCheck.sh`
  echo $tt
  tt1=`echo ${tt##*=}`
  tt2=`echo ${tt1%;}`
  echo $tt2;
  if [ "$tt2"X == "1"X ];then
         cp -f $install_path/chinese/rule.xml /alidata/server/mycat/conf/rule.xml
         cp -f $install_path/chinese/schema.xml.1  /alidata/server/mycat/conf/schema.xml
  elif [ "$tt2"X == "2"X ];then
         cp -f $install_path/chinese/rule.xml /alidata/server/mycat/conf/rule.xml
         cp -f $install_path/chinese/schema.xml.2  /alidata/server/mycat/conf/schema.xml
  else
         echo "mycat type error!"
  fi
  /alidata/server/mycat/bin/mycat restart &
else
  echo 'do nothin';
fi
  • 实践
  • 实践二

经过优化,src/sql/largeUpdate/20200423

参考这个文件夹下的写法,每次只要写一行即可。 因为引用了公共抽像文件multi_table.sh

#! /bin/bash
. ../multi_table.sh
exec dn traffic

猜你喜欢

转载自blog.csdn.net/dualvencsdn/article/details/109114687
今日推荐