#!/bin/bash PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" LANG="en_US.UTF-8" add_partition(){ dbserver="$1" dbuser='root' dbpwd='test@123456' dbname="$2" dbport=3306 t_name="test" # 分区表的表名称 sqlcmd=" SELECT REPLACE(partition_name,'p','') FROM INFORMATION_SCHEMA.PARTITIONS WHERE table_name='$t_name' and TABLE_SCHEMA = '$dbname' ORDER BY partition_ordinal_position DESC LIMIT 1" # 获取最大的分区日期 max_partition=`mysql -h$dbserver -u$dbuser -p$dbpwd --port=$dbport --database $dbname -e"$sqlcmd" | sed 1d ` sqlcmd="select date_add(date_format('${max_partition}01','%Y-%m-%d'),INTERVAL 2 month),replace(left(date_add(date_format('${max_partition}01','%Y-%m-%d'),INTERVAL 1 month),7),'-','')" t_mid=`mysql -h$dbserver -u$dbuser -p$dbpwd --port=$dbport --database $dbname -e"$sqlcmd" | sed 1d` p_time=`echo $t_mid | awk '{print $1}'` p_name=`echo $t_mid | awk '{print $2}'` sqlcmd="ALTER TABLE $t_name ADD PARTITION (PARTITION p${p_name} VALUES LESS THAN (to_days('${p_time}'))); " mysql -h$dbserver -u$dbuser -p$dbpwd --port=$dbport --database $dbname -e"$sqlcmd" if [ $? -ne 0 ];then mess="命令:$sqlcmd 执行失败" # 设置状态提醒 exit 0 else mess="命令:$sqlcmd 执行成功" fi; } serverlist=('192.168.1.115') dblist=('test_1' 'test_2' 'test_3' 'test_4') let len_serverlist=${#serverlist[@]}-1 let len_dblist=${#dblist[@]}-1 i=0 while [[ $i -le $len_serverlist ]];do n=0 while [[ $n -le $len_dblist ]];do echo ${serverlist[i]}.${dblist[n]} add_partition ${serverlist[i]} ${dblist[n]} let n++ done let i++ done
mysql 自动增加分区脚本
猜你喜欢
转载自blog.51cto.com/dwchaoyue/2322381
今日推荐
周排行