IEE版本:5.1.40

需求:由于目前的IEE版本并不支持分区表,且删除历史数据效率很低,删除部分数据后空间释放方面也不理想。

现采用按月分表存放数据。这样卸载历史数据时,直接删除历史表即可。

改造步骤:

  1. 原表重命名为“原表名_YYYYMM”
  2. 上传月表创建脚本到服务器
  3. 附:IEE月表创建脚本

1.原表重命名为“原表名_YYYYMM”

YYYYMM代表当前年月,例如201505.
IEE查询某业务用户下的表名:

select table_name from information_schema.TABLES where table_type='BASE TABLE' and table_schema='db_name' ;

注:上面的db_name 替换为你实际的数据库名字.

原表重命名:

例如,原表是my_t1重命名my_t1_201505

IEE重命名表的语法示例:

rename table my_t1 to my_t1_201505;

2.上传月表创建脚本到服务器

IEE按照月份来分表,不同月份数据入到不同的分月表中。

为了规范管理,统一将脚本上传到/root/get_ddl/路径下,

每月底在IEE服务器上执行get_ddl.sh脚本即可。

使用方法:
使用root用户
# cd /root/get_ddl
# sh get_ddl.sh
此脚本会自动获取本月相关表的表结构,在IEE库中建立下个月的表。如果新建表后有表结构修改,请在数据库中删除下月表后,重新执行脚本(请注意执行时间!)

附:IEE月表创建脚本

```
#!/bin/bash
#Usage: Create IEE Month Table, you can put this script in /root/get_ddl/.
#You need modify the IEE IP Address in the part of #1.1!
#ex: sh get_ddl.sh 2&> ./IEE_ddl.log
#Version: 2.0.0
#Author: O.o, Alfred Zhao
#Creation:2015-05-11

1. Define variable.

1.1 define your IEE IP Address.

host1="192.168.99.159"

pwd1="123321"

host2=""

pwd2=""

host3=""

pwd3=""

1.2 define other variable.

base=pwd

old_date=date +%Y%m

new_date=date +%Y%m --date='+1 month'

2. Create Folders

Directory: $base/tmp, $base/old_table_dir, $base/new_table_dir.

if [ -d tmp ]; then

echo 'go on'

else

echo 'mkdir tmp'

mkdir tmp

fi

if [ -d old_table_dir ]; then

echo 'go on'

else

echo 'mkdir old_table_dir'

mkdir old_table_dir

fi

if [ -d new_table_dir ]; then

echo 'go on'

else

echo 'mkdir new_table_dir'

mkdir new_table_dir

fi

3. Create tables

3.1 create parameter file table_name.

mysql-ib <$base/tmp/abc

select table_name from information_schema.TABLES where table_type='BASE TABLE' and table_schema='crnop' ;

exit

EOF

cat $base/tmp/abc|grep $old_date > $base/table_name

3.2 loop execute

while read Fileline

do

echo "use crnop;" > $base/tmp/$Fileline.sql

echo "show create table $Fileline" >> $base/tmp/$Fileline.sql

echo $Fileline > $base/tmp/Fileline

mysql-ib -N < $base/tmp/$Fileline.sql > $base/old_table_dir/tmp_$Fileline.sql

 old_table_name=`cat $base/old_table_dir/tmp_$Fileline.sql | awk '{print $1}'`
sed 's/\\n//g' $base/old_table_dir/tmp_$Fileline.sql |awk '{$1="";print $0}' > $base/old_table_dir/old_$Fileline.sql new_table_name_part=`awk -F'_' 'OFS="_"{$NF="";print}' $base/tmp/Fileline`
new_table_name=$new_table_name_part$new_date echo "Old table name is :$old_table_name"
echo "New table name is :$new_table_name" echo "use crnop;" > $base/new_table_dir/$new_table_name.sql
sed "s/$old_table_name/$new_table_name/g" $base/old_table_dir/old_$Fileline.sql >> $base/new_table_dir/$new_table_name.sql if [ "$host1" != "" ]; then
echo "host1: $host1"
mysql-ib -u root -p$pwd1 -h$host1 < $base/new_table_dir/$new_table_name.sql
else
echo "host1 $host1 doesn't exist."
fi if [ "$host2" != "" ]; then
echo "host2: $host2"
mysql-ib -u root -p$pwd2 -h$host2 < $base/new_table_dir/$new_table_name.sql
else
echo "host2 $host2 doesn't exist."
fi if [ "$host3" != "" ]; then
echo "host3: $host3"
mysql-ib -u root -p$pwd3 -h$host3 < $base/new_table_dir/$new_table_name.sql
else
echo "host3 $host3 doesn't exist."
fi

done < $base/table_name

IEE分月表改造的更多相关文章

  1. 数据分表Mybatis Plus动态表名最优方案的探索

    一.应用场景 大家在使用Mybatis进行开发的时候,经常会遇到一种情况:按照月份month将数据放在不同的表里面,查询数据的时候需要跟不同的月份month去查询不同的表. 但是我们都知道,Mybat ...

  2. Nodejs之MEAN栈开发(七)---- 用Angular创建单页应用(下)

    上一节我们走通了基本的SPA基础结构,这一节会更彻底的将后端的视图.路由.控制器全部移到前端.篇幅比较长,主要分页面改造.使用AngularUI两大部分以及一些优化路由.使用Angular的其他指令的 ...

  3. mysql 案例 ~ 主从复制延迟之并行复制

    一 概念说明   1 模型 并行复制是典型的生产者.消费者模式,Coordinator作为生产者,worker线程作为消费者.   2 Waiting for preceding transactio ...

  4. 记一次企业级爬虫系统升级改造(二):基于AngleSharp实现的抓取服务

    爬虫系统升级改造正式启动: 在第一篇文章,博主主要介绍了本次改造的爬虫系统的业务背景与全局规划构思: 未来Support云系统,不仅仅是爬虫系统,是集爬取数据.数据建模处理统计分析.支持全文检索资源库 ...

  5. 四极耳机接线标准,N版耳机改造为i版耳机

    (本文提到的都是3.5mm的耳机,2.5mm的没做验证) 现在的手机,以及大多数笔记本都开始使用“四极耳机”,也就是耳机上插头上有四个极.为了叙述方便,将耳机插头上的四个极从插头顶端到靠近电线的塑胶部 ...

  6. 1018Mysql分表分库

    单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数 ...

  7. SOA架构改造简单记录

    前端支持PC.Mobile.H5三个平台 nginx做负载均衡,主备机,keepalived,检测脚本,master和slave切换时完成相关工作: web做集群,web仅仅是web,与后端服务模块采 ...

  8. 改造二叉树 (长乐一中模拟赛day2T1)

    1.改造二叉树 [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随 ...

  9. 数据库分库分表(sharding)系列【转】

    原文地址:http://www.uml.org.cn/sjjm/201211212.asp数据库分库分表(sharding)系列 目录; (一) 拆分实施策略和示例演示 (二) 全局主键生成策略 (三 ...

随机推荐

  1. 利用Mongodb的复制集搭建高可用分片,Replica Sets + Sharding的搭建过程

    参考资料 reference:  http://mongodb.blog.51cto.com/1071559/740131  http://docs.mongodb.org/manual/tutori ...

  2. 关于启明星系统(OA系统,预定系统,请假系统等)安全性的说明

    启明星系统推荐是安装在内网里,因此,系统采用了较为简单的身份验证. 事实上,在访问页面时,系统会判断当前cookie的uid是否大于0,如果是,则表示用户已经登录,否则表示未登录. public st ...

  3. django 注册、登录及第三方接口程序(4):扩展邮箱注册,登录,微博登录

    1.邮箱注册 这里需要扩展User,两种解决办法,1,注册时将email字段内容赋给username,这种瞒天过海型的,另一种就是扩展user,这里介绍django1.5的扩展方法. 1.settin ...

  4. js 排列 组合 的一个简单例子

    最近工作项目需要用到js排列组合,于是就写了一个简单的demo. 前几天在网上找到一个写全排列A(n,n)的code感觉还可以,于是贴出来了, 排列的实现方式: 全排列主要用到的是递归和数组的插入 比 ...

  5. Xcode中iPhone iPad模拟器调整大小的方法

    Xcode中调试iPad程序默认的iPad模拟器非常小,如何方法iPad模拟器的显示尺寸呢? 选中iOS模拟器,在“Window -> 缩放比例”中就可以调整了. 快捷键: Command + ...

  6. 解决chi_sim.traineddata报read_params_file: parameter not found: allow_blob_division

    在使用语音库时候 遇到报错:allow_blob_division,例如使用chi_sim.traineddata;在chi_sim.traineddata(注意版本)文件目录下,使用命令行执行: c ...

  7. 深入学习golang(5)—接口

    接口 概述 如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键.在Go语言的实际编程中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构 ...

  8. 资源监控工具Spotlight-使用说明

    几年前使用过此工具,发现用于监控远程服务器,非常方面而且快捷.当前再次用于配合压力测试进行资源监控,突然想起来了,以免生疏,在此记录! 1.被监控服务器为Ubuntu server,先在服务器上创建一 ...

  9. Intellij idea 乱码问题(英文操作系统)

    英文操作系统导致 Debug 下的变量查看时显示乱码,可通过改变字体解决此问题.

  10. [Javascript] Limit Built Branches on Travis

    By default, Travis will build all branches, tags, and Pull Requests. Because we're building our mast ...