GBase 8a
运维管理
文章

单数据节点统计临时文件大小。

发表于2025-09-01 09:35:0740次浏览0个评论

目前还在完善中:

#!/bin/bash
source /home/gbase/.bashrc
workdir=$(cd `dirname $0`;pwd)
cd ${workdir}
file_date=`date +"%Y%m%d"`
lg=${workdir}/${file_date}.lg
tmp=${workdir}/tmp
tmp1=${workdir}/tmp1
coor_list_file=${workdir}/coor_list_file
>${tmp}
>${tmp1}
date_time=`date +"%Y-%m-%d:%H:%M:%S"`
pss_user=
pss=
localhost_ip=`/usr/sbin/ifconfig  bond1 |grep netmask |awk '{print $2}'`
echo ${date_time} >>${lg}
echo "统计文件大小:" >>${lg}
du -s /opt/GBase8aMPP/gnode/tmpdata/cache_gbase >>${lg}
du -s /opt/GBase8aMPP/gnode/tmpdata/cache_gbase/HashJoin >>${lg}
du -s /opt/GBase8aMPP/gnode/tmpdata/cache_gbase/tmp_longblob >>${lg}
du -s /opt/GBase8aMPP/gnode/tmpdata/cache_gbase/tmp_materialized >>${lg}
du -s /opt/GBase8aMPP/gnode/tmpdata/cache_gbase/TrashCan >>${lg}
du -s /opt/GBase8aMPP/gnode/userdata/gbase/gctmpdb >>${lg}
du -s /opt/GBase8aMPP/gnode/userdata/gbase/gctmpdb/sys_tablespace >>${lg}
du -s /opt/GBase8aMPP/gnode/userdata/gbase/gctmpdb/metadata >>${lg}


timeout 2 gncli -u${pss_user} -p${pss} -h${localhost_ip} -P5050 -e'select 1;' >>/dev/null
if [ $? -eq 0 ]; then
    echo ${date_time}":数据节点连接正常-继续" >>${lg}
else
    echo "0:链接异常"
    echo ${date_time}":数据节点连接超时-停止" >>${lg}
    exit 1
fi

patch_num=`ls /opt/GBase8aMPP/gnode/tmpdata/cache_gbase/* | grep express_tmp |wc -l`
echo "统计tmpdata类型临时文件数量:"${patch_num}>>${lg}
if [[ ${patch_num} != '0' ]]; then
    tmp_hc_patch_num_list=`du -s /opt/GBase8aMPP/gnode/tmpdata/cache_gbase/* |grep express_tmp  |awk -F'_GB_' '{print $1}' | awk '{print $2" "$1}'|awk -F'gbase/s' '{print $2}'| awk '{sum[$1]+=$2}END{for(i in sum){print i"+"sum[i]}}'  | sed -r 's/0*([0-9])/\1/'`
    for tmp_hc_patch_num_a in ${tmp_hc_patch_num_list}
    do
        node_id=`echo ${tmp_hc_patch_num_a} |awk -F'+' '{print $1}'`
        node_disk=`echo ${tmp_hc_patch_num_a} |awk -F'+' '{print $2}'`
        data_sql=`gncli -u${pss_user} -p${pss} -h${localhost_ip} -P5050 -vvv -e 'show full processlist;' |grep -w ${node_id}`
        coorip=`echo ${data_sql} | awk -F'|' '{print $5}'|awk -F':' '{print $1}'|awk '{print $1}'`
        coorid=`echo ${data_sql} | awk -F "${coorip}" '{print $3}' |awk -F'_' '{print $2}'`
        echo ${coorip}"_"${coorid}"+"${node_disk} >>${lg}
        echo ${coorip}"_"${coorid}"+"${node_disk} >>${tmp}
    done
else
    echo "文件数为0不需要统计" >>${lg}
fi

patch_num=`ls /opt/GBase8aMPP/gnode/userdata/gbase/gctmpdb/sys_tablespace/ | grep _tmp_ |wc -l`
echo "统计gctmpdb类型临时文件数量:"${patch_num} >>${lg}
if [[ ${patch_num} != '0' ]]; then
    tmp_hc_patch_num_list=`du -s /opt/GBase8aMPP/gnode/userdata/gbase/gctmpdb/sys_tablespace/* |awk -F'_tmp_' '{print $1" "$2}' |awk '{print $1" "$3}' |sed 's/rht_//g'| awk -F'_t' '{print $1}' |awk '{print $2" "$1}' | awk '{sum[$1]+=$2}END{for(i in sum){print i"+"sum[i]}}'`
    for tmp_hc_patch_num_a in ${tmp_hc_patch_num_list}
    do
        node_id=`echo ${tmp_hc_patch_num_a} |awk -F'+' '{print $1}'`
        node_disk=`echo ${tmp_hc_patch_num_a} |awk -F'+' '{print $2}'`
        coorip1=`echo ${node_id} |awk -F'_' '{print $1}'`
        coorid1=`echo ${node_id} |awk -F'_' '{print $2}'`
        coorip2=`cat ${coor_list_file} |grep ${coorip1} | awk -F'+' '{print $2}'`
        echo ${coorip2}"_"${coorid1}"+"${node_disk} >>${lg}
        echo ${coorip2}"_"${coorid1}"+"${node_disk} >>${tmp}
    done
else
    echo "文件数为0不需要统计" >>${lg}
fi
for tmp_num in `cat ${tmp}`
do
    tmp_num_a=`echo ${tmp_num} |awk -F'+' '{print $2}'`
    if [[ ${tmp_num_a} != '0' ]]; then
        echo ${tmp_num} >>${tmp1}
    else
        echo ${tmp_num}"大小为0不统计" >> ${lg}
    fi
done

cat ${tmp1} | awk -F'+' '{sum[$1]+=$2}END{for(i in sum){print i"+"sum[i]}}' >${tmp}
echo "结果为:" >>${lg}
cat ${tmp1} | awk -F'+' '{sum[$1]+=$2}END{for(i in sum){print i"+"sum[i]}}' >>${lg}
disk_path=`df -h /opt/GBase8aMPP |grep -iv use |grep  -iv 已用|awk '{print $5}' | awk -F'%' '{print $1}'`
tmp4=`cat ${tmp} |wc -l`
tmp3=''
for a in `cat ${tmp}`
do
    tmp3=${a}";"${tmp3}
done
echo "1:"${disk_path}";"${tmp4}":"${tmp3}
tar_date=`date +"%-d"`
if [[ ${tar_date} -eq 25 ]]; then
    tar1=`date -d"last month" +%Y%m`
    lg1=`ls ${workdir}/* |grep  ${tar1} |wc -l`
    if [[ ${lg1} -gt 0 ]];then
        rm -rf ${workdir}/${tar1}*
    fi
fi

评论

登录后才可以发表评论