架设的RRD server上,所有的rrd设定的rra都遵循一个规则,第一个rra存放一周的最详细的数据,第二个存放一个月的数据,6/1进行归档,第三个存放365天的数据,72/1进行归档。
但是今天,有个兄弟提了个需求过来,需要看到一周前的详细数据,那就是说,我所有的第一个rra都要从一周扩展到至少8天,于是,我做了一个错误的决定……将所有服务器的rrd文件全部删除,然后修改生成rrd的库,重新从数据库获取数据,生成rrd文件……
过了30分钟,我终于回过神来,为何不用rrdresize呢?这次愚昧了一把,所有数据的重新导入浪费了很长时间,而且历史数据也全部丢弃了……
将所有rrd文件的第一个rra扩展576个数据节点的shell脚本(因为我的数据是5分钟一个):
for i in `find /opt/rrdfile -name "*.rrd"`
do
echo "Resizing $i ..."
/opt/rrdtool/bin/rrdtool resize $i GROW 576
rm -f $i
cp resize.rrd $i
done
半个小时搞定……
# du -sh *
384M app
12G host
939M hostgroup
12G的数据全部删除,然后rebuild,花了两个小时的时间……哭……
以后做每件事情之前,都要多想一想,有没有别的办法可以达到目的?如果有的话,几种方法比较起来,每一种方法风险如何,难度如何,影响如何?
事无大小巨细,方法最重要。
阅读(2815) | 评论(0) | 转发(0) |