2014年4月4日星期五

mongodb拆库分表脚本

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
mongodb拆库分表脚本  阅读原文»

mongodb拆库分表脚本

脚本功能:

1. 将指定的报告文件按照指定的字段、切库切表策略切分

2. 将切分后的文件并发导入到对应的Mongodb中

3. 生成日志文件和done标识文件

使用手册:

-h 打印帮助信息,并退出";

-f 需要切分的数据文件";

-g 清理昨日或历史全部数据: 1 昨日数据 2 历史全部数据";

-k 拆分字段在文件中列数,从1开始";

-o 需要切分的数据文件格式 tsv或csv ";

-d 切分的库数目";

-t 切分的表数目";

-m 切分后,需要入库的mongodb未拆分库名,比如拆分前cpc, 拆分后cpc_01";

-c 切分后,需要入库的mongodb未拆分库名,比如拆分前cpc, 拆分后cpc_0102";

-a 入库fieldFile";

-p 配置文件",

使用步骤:

1. 在配置文件中设置日志、切割后数据临时路径$LOG_HOME 和 $DATA_SPLIT_HOME目录,如果不存在,则手动创建;

在配置文件中设置目标Mongodb参数信息,用来作为导入数据的目标库;

在配置文件中设置Mongodb程序的主目录$MONGO;

2. 按照具体的参数意义,仿照下面的格式执行脚本:

举例:./mongo-split-importer.sh -f /data/shell/test.ata -g 1 -o tsv -k 3 -d 3 -t 3 -m idea -c idea -p ../conf/demeter_conf_qa.sh -a ../conf/idea-head-file

-f 切分目标文件 -o 文件格式 tsv -k 切割字段,第三个 -d 切割成3个库 -t 每个库3个表

-m 导入的mongodb未拆分名称idea -c 导入的mongodb未拆分表名idea -p 环境配置文件 -a 导入目标表的fieldFile文件 -g 清理昨日数据

mongo-split-importer.sh执行脚本:

SPLITFILE="" #目标切割文件
FILEFORMAT="" # 目标切割文件格式 , \t
FILEFORMATNAME="" #切割目标文件格式名称 csv tsv
SPLITDBNUM="" #目标切割库数目
SPLITTBNUM="" #目标切割表数目
IMPORTDBNAME="" # 目标入库未分割库名
IMPORTTBNAME="" #目标入库未切割表名
PROFILE="" #配置文件
FIELDFILE="" #入库fieldFile
CLEAN=0 #清理数据, 0:默认不清理, 1 : 清理昨日的数据 2: 清理所有以前的数据
SPILTTMPDIR="" #目标切割文件存放临时目录
FULLPATH=$(cd `dirname $0`;pwd -P)
SCRIPTFILE=`basename $0`
TOTLE_RECORD_NUM=0 #文件切割前的记录条目
SUBFILE_RECORD_NUM=0 #切割后所有文件汇总的记录条目
_mongo_count="-1"
#------------------------------------------------函数---------------------------------------------------------------
function usage(){
echo "$SCRIPTFILE - 分库分表后将数据导数据到mongodb"
echo " -h 打印帮助信息,并退出";
echo " -f 需要切分的数据文件";
echo " -g 是否清理历史数据,默认不清理 1:清理昨日数据 2:清理以前所有数据";
echo " -k 拆分字段在文件中列数,从1开始";
echo " -o 需要切分的数据文件格式 tsv或csv ";
echo " -d 切分的库数目";
echo " -t 切分的表数目";
echo " -m 切分后,需要入库的mongodb未拆分库名,比如拆分前cpc, 拆分后cpc_01";
echo " -c 切分后,需要入库的mongodb未拆分库名,比如拆分前cpc, 拆分后cpc_0102";
echo " -a 入库fieldFile";
echo " -p 配置文件,绝对或相对路径文件",
function setFileFormat(){
FILEFORMATNAME=$1
csv) FILEFORMAT=",";;
tsv) FILEFORMAT="\t";;
*) echo "unknow profile -o $1"; usage;;
while getopts ':hf:g:o:k:d:t:a:p:m:c:' OPTION
f) SPLITFILE=$OPTARG;;
o) setFileFormat $OPTARG;;
k) SPLITKEY=$OPTARG;;
d) SPLITDBNUM=$OPTARG<

阅读更多内容

没有评论:

发表评论