`
j2ee_yohn
  • 浏览: 168488 次
  • 性别: Icon_minigender_1
  • 来自: 湖南/株洲
社区版块
存档分类
最新评论

一个简单的切割shell

阅读更多
#!/bin/bash

source /etc/profile

#mysql执行客户端
mysql_c='mysql -h 127.0.0.1 -u root -e'

#需要切割或者分析的表名
table=""

#统计哪天数据(默认分析上一天数据)
statDate=`date -d '-1 day' +'%F'`



##切割表、当指定表文件>1GB时执行
function split_table()
{
	if [ -z "$table" ];then
		echo "table can't be empty"
		return 0
	fi
	
	tfile="/data/mysql/db_log/$table.ibd"
	if [ ! -f "$tfile" ];then
		echo "split_table `date +'%F %H:%M:%S'` db file not found $tfile"
		return 0
	fi
	
	fsize=`ls -l $tfile 2>/dev/null | awk -F ' ' '{print $5}'`
	((compGB=1024))#*1024*1024*1))
	if [[ -z "$fsize" ||  $fsize -lt $compGB ]];then
		echo "split_table `date +'%F %H:%M:%S'` $tfile < 1GB 不需要切分"
		return 1;
	fi
	
	bak_table="$table"_`date +'%y%m%d%H'`
	tmp_table="$table"_bak;
	
	sql="create table if not exists db_log.$tmp_table like db_log.$table;
		alter table db_log.$table rename db_log.$bak_table;
		alter table db_log.$tmp_table rename db_log.$table;
	"
	
	echo "split_table `date +'%F %H:%M:%S'` start fileSize[$fsize B],rename[$table to $bak_table]"
	$mysql_c "$sql" #执行切表
	echo "split_table `date +'%F %H:%M:%S'` end fileSize[$fsize B],rename[$table to $bak_table]"
}

case "$1" in
    splitTable)
		#指定表切割
		if [ -n "$2" ];then
			table="$2"
			split_table
			return
		fi
		
		table="tb_stats_log"
		split_table
    ;;
    *)
                "Using :(splitTable)"
    ;;

esac
exit 0
0
1
分享到:
评论

相关推荐

    nginx按天进行日志切割脚本,同样适合其它很多服务日志的切割

    nginx按天进行日志切割脚本,同样适合其它很多服务日志的切割,压缩包包含shell切割脚本和使用说明,该脚本适合nginx同时也适合其他类似服务的日志切割,只要简单修改shell脚本即可,灵活多变,实用。

    linux大作业报告

    4、编写程序实现一个简单的员工档案管理系统,具备简单的员工资料增加、删除和查询等功能,并采用二进制文件保存员工的资料信息。 5、为了便于文件的管理和传输,某些时候需要将特别大的文件切割为多个指定长度小的...

    Shell脚本服务管理命令行工具合集(40个案例)BASH脚本SH案例参考Linux脚本写法规范学习参考传参封装切割处理等

    Shell脚本经典案例,sh脚本语法参考,封装参考,SH脚本文件案例,BASH脚本文件参考,Linux脚本文件参考,sh脚本文件写法参考,SH...shell 脚本 (.sh) 编写及执行参考代码,简单有效,案例,参数传递,经典实例大全。

    分享一个入门级可控多线程shell脚本代码

    分享一个入门级可控多线程shell脚本方案 下面张戈博客再分享另一种更容易理解的入门级可控多线程shell脚本方案:任务切割、各个击破。 先来 1 段场景描述: 某日,在鹅厂接到了这个任务,需要在Linux服务器中,对几...

    Shell脚本实现简单分割字符串

    主要介绍了Shell脚本实现简单分割字符串,本文讲解使用CUT命令实现以逗号、分号或其它分隔符来切割字符串,需要的朋友可以参考下

    Crontab+Shell做Nginx日志切割脚本实例代码

    平日里,我们需要把 Nginx 的错误日志输出到文件里,但是时间一长,文件就特别大,之前我服务器上日志就一周没管它,今天一看日志文件都32个G了,大的吓人。于是就写了个日志切割的脚本。 原理 其实日志切割脚本的...

    Nginx日志切割-按小时

    Nginx日志切割-按小时序言原理Shell脚本验证脚本定时配置 序言 最近调试接口,做ip授权,涉及到了查看nginx日志,但是由于每日数据量太大,导致从现场导出日志过于费劲,时间过于漫长,所以想到了给日志做时间切割! ...

    JAVA上百实例源码以及开源项目源代码

    Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    zhoudini:Houdini hda的集合,专注于过程建模和游戏开发

    Z_HOUDINI Houdini hda的收藏集中于过程建模和游戏开发。 其中许多都是WIP且可能无法正常使用,所有工具均已解锁为开放源代码,随时可以编辑\重新分发! 归功于Gamedev sidefxlab,qL和... :通过另一个网格的uvs变

    Delphi 7 新概念百例

    │ └─31 实现.dfm文件和.txt文件的互相转换 ├─3第三节 Shell研究 │ ├─30 为程序创建快捷方式 │ ├─29 获取Windows的若干特殊文件夹路径(二) │ ├─28 获取Windows的若干特殊文件夹路径(一) ...

    ruby-gem-push-action:将宝石包装推入与rubygems兼容的仓库的动作

    将宝石推到与宝石切割机兼容的存储库中的操作。 可能是RubyGems或GitHub软件包。 它期望已经使用环境变量GEM_HOST和GEM_HOST_API_KEY设置了身份验证。 请参阅以获取将其设置为推送至GitHub的操作。 如果仓库中已经...

    2017最新大数据架构师精英课程

    69_开启和关闭一个进程 70_hadoop常用的命令和关闭防火墙) Q" A0 B3 M8 s3 ? 71_hadoop存储为何是128M 72_hadoop的存储问题 73_hadoop的高可用 74_配置hadoop临时目录 75_hadoop的hdfs的jar包 76_hadoop的存储问题+ ...

Global site tag (gtag.js) - Google Analytics