通过shell脚本自动增加mysql分区表的分区
来源:互联网 发布:数控车工编程 编辑:程序博客网 时间:2024/05/22 12:18
http://blog.chinaunix.net/uid-411974-id-88397.html
- #!/bin/sh
- #
- #
- :<<BLOCK
- ######################################################################
- SHELL_NAME:Logdb_Add_Partition.sh
- Functional Description:At the last month auto add the logdb table partition
- Argument:
- $1 USER Mysql Account
- $2 PASS Mysql Account Pass
- $3 DB Mysql Logdb
- Version:V1.0
- Creater : SongYunkui
- Colin_Song
- Crete_time:2010/12/9
- Modify:1. MODIFY BY
- 2. ADD BY ____ ___/__/__ Add:_________
- ######################################################################
- BLOCK
- #######################################################################################
- if [ $# -lt 3 ]; then
- echo "Please Input The Correct Args"
- echo "Usage Logdb_Add_Partition.sh <USER> <PASS> <DB>"
- exit -1
- fi
- USER=$1
- PASS=$2
- DB=$3
- ##config section begin
- CONN_MYSQL="-u$USER -p$PASS -s"
- MYSQL_HOME=/opt/modules/mysql
- MYSQL_DIR=${MYSQL_HOME}/bin/mysql
- SHELL_BASE=/opt/sbin/Logdb
- LOG_DIR=${SHELL_BASE}/log
- OPT_NAME=add_partition
- MKDIR=`whereis-b mkdir|awk'{print $2}'`
- TOUCH=`whereis-b touch|awk'{print $2}'`
- DATE=`whereis-b date|awk'{print $2}'`
- if [ ! -d ${SHELL_BASE}]
- then
- ${MKDIR}-p ${SHELL_BASE}
- fi
- if [ ! -d ${LOG_DIR}]
- then
- ${MKDIR}-p ${LOG_DIR}
- fi
- if [ ! -d ${INI_DIR}]
- then
- ${MKDIR}-p ${INI_DIR}
- fi
- LOG_FILE=${LOG_DIR}/${OPT_NAME}.log
- #config section end
- #working start
- CURRENT_DATE=`${DATE}+'%Y-%m-%d'`
- echo "${CURRENT_DATE} everything is ok, runing start">> ${LOG_FILE}
- #loop read the partition table and column
- while read TAB_NAME COL_NAME
- do
- COUNTER=1
- CURRENT_YEAR=`date+%Y`
- #check the next month
- NEXT_MONTH=`date-d next-month+%m`
- #check the next month has many days
- case ${NEXT_MONTH} in
- 1|01|3|03|5|05|7|07|8|08|10|12)
- CURRENT_DAY=31
- ;;
- 4|04|6|06|9|09|11)
- CURRENT_DAY=30
- ;;
- 2|02)
- if [ `expr ${CURRENT_YEAR}% 4` -eq 0]; then
- if [ `expr ${CURRENT_YEAR}% 400` -eq 0]; then
- CURRENT_DAY=29
- elif [ `expr ${CURRENT_YEAR}% 100` -eq 0]; then
- CURRENT_DAY=28
- else
- CURRENT_DAY=29
- fi
- else
- CURRENT_DAY=28
- fi
- ;;
- esac
- #work start add the every day partition
- while [${COUNTER}-le ${CURRENT_DAY}]
- do
- #calculate the current day's next {counter} day
- PATNAME_DATE=`date-d "${COUNTER} days"+%Y%m%d`
- COUNTER=`expr${COUNTER}+ 1`
- PAT_DATE=`date-d "${COUNTER} days"+%Y%m%d`
- #change the unix_timestamp
- PAT_UNIX_TIMESTAMP=`${MYSQL_DIR}${CONN_MYSQL}<<EOF
- use ${DB};
- select UNIX_TIMESTAMP('${PAT_DATE}');
- EOF`
- ##add partition sql
- V_SQL="ALTER TABLE ${DB}."${TAB_NAME}" ADD PARTITION (PARTITION P"${PATNAME_DATE}" VALUES LESS THAN ("${PAT_UNIX_TIMESTAMP}"));"
- echo $V_SQL
- #exec the sql
- ${MYSQL_DIR}${CONN_MYSQL}<<EOF
- use ${DB};
- $V_SQL;
- EOF
- done
- done<./Logdb_Partition.ini
- #working end
- END_DATE=`${DATE}+'%Y-%m-%d %H:%M:%S'`
- echo "${END_DATE} runing finished" >> ${LOG_FILE}
- echo -e "\n--------------------------------------------------------------------">> ${LOG_FILE}
- 通过shell脚本自动增加mysql分区表的分区
- 自动为分区表增加分区存储过程
- MySQL自动分区脚本
- mysql分区表,循环分区,触发器自动删除
- Oracle 分区表增加分区
- DB2 分区表增加分区
- 自动备份 MySQL 数据库的 shell 脚本
- oracle range分区表增加分区
- oracle range分区表增加分区
- MySQL和ORACLE每天自动增加分区
- mysql按天分区-自动增加分区
- 管理分区表+为范围分区表增加分区+为散列分区表增加分区+为列表分区表增加分区+查看当前用户的表和表分区信息+合并分区+删除分区
- HASH分区表增加新的分区的一点研究
- Oracle分区表,哈希分区的新建与增加
- MySQL分区表--hash分区
- MySQL分区表--key分区
- mysql的自动分区
- 增加系统安全的shell脚本
- Shell快捷键汇总
- jQuery实现等比例缩放大图片
- vim使用小结
- DSFavIconManager 是一个用来显示网站 favicon 的完整解决方案
- linux之sed用法
- 通过shell脚本自动增加mysql分区表的分区
- URL 获取网络资源
- 最好的电子书下载网站
- 如何关闭ubuntu中的"System Program Problem Detected"提示
- 不安装office导出excel
- mysql大数据导入方法
- 关闭Win8快速启动,解决网卡识别错误/网卡驱动安装不正确的问题
- 测试面试
- 定制CentOS 5安装光盘