网站后台管理系统制作软件,亿网科技官网,免费域名注册,网站开发超速云TDengine 目前只提供统计超级表占用空间的工具#xff1a;
2.x 版本使用 select _block_dist() from STABLE_NAME3.x 版本使用 show table distributed STABLE_NAME
但以上的统计结果并不准确。 如果想统计 DB 使用的空间#xff0c;只能通过统计所属 vnode 占用空间进行统…TDengine 目前只提供统计超级表占用空间的工具
2.x 版本使用 select _block_dist() from STABLE_NAME3.x 版本使用 show table distributed STABLE_NAME
但以上的统计结果并不准确。 如果想统计 DB 使用的空间只能通过统计所属 vnode 占用空间进行统计。
以下脚本可以实现自动统计所在节点所有数据库的大小。
使用方法
[roottest ]# mkdir dbsize
[roottest ]# cd dbsize
[roottest dbsize]# sh dbsize.sh
db01 0.209675 GB
backtrade 0.282856 GB
db11 0.022892 GB
log 0.163288 GB
audit 0.0711403 GB注意
需要根据实际环境配置用户名和密码脚本会生成一系列临时文件最好放在单独目录内执行脚本兼容2.x和3.x版本如果只想统计数据文件大小可以将24行中 xargs du -s 修改为 xargs -I {} du -s {}/tsdb
脚本实现逻辑
通过 taos 命令获取数据库列表将结果存储到 dblist.tmp 文件中清理 dblist.tmp 文件中可能存在的Windows 换行符^M并将结果排序后保存到 dblist 文件中。遍历每个数据库通过 taos 命令获取该数据库中每个vgroup 的信息将结果存储到 ${db}.vglist 文件中。清理 ${db}.vglist 文件中可能存在的 Windows换行符。遍历 ${db}.vglist 文件中的每个 vgroup通过查找文件夹大小的方式计算每个 vgroup 的大小并将结果存储到 ${db}.size 文件中。输出每个数据库的总大小即各个 vgroup 的大小之和。
脚本内容如下
#!/bin/sh
userroot
passtaosdatataos -u${user} -p${pass} -s show databases\G|grep name: |awk {print $NF} |grep -v _schema dblist.tmp
#echo Get DBlist Done!
cat -v dblist.tmp | sed s/\^M//g |sort -ndblist
rm -f dblist.tmp
cat dblist |while read db
dotaos -u${user} -p${pass} -s show ${db}.vgroups\G|grep -E vgId|vgroup_id|awk {print $NF} ${db}_vg.tmpcat -v ${db}_vg.tmp | sed s/\^M//g ${db}.vglistrm -f ${db}_vg.tmp#echo Get ${db} vglist Done!if [ -s ${db}.vglist ]thenecho ${db}.sizecat ${db}.vglist|while read viddofor ddir in $(grep -i datadir /etc/taos/taos.cfg|grep -v #|awk {print $2})doif [ -d ${ddir}/vnode/vnode${vid} ]thenvgsize$(find ${ddir} -type d -name vnode${vid} |xargs du -s |awk {print $1})echo ${db}.vnode${vid} ${vgsize} ${db}.sizefidonedoneecho ${db} $(cat ${db}.size|awk {sum$2} END {print sum/1024/1024 GB})fi
done