Cassandra的数据整理

Life is full of accidence, just enjoy it!

 

人生总是时时充满意外,在你某个不注意的角落,会给你突然来一下。做为一个程序猿,很多时候,你的工作就是排雷兵,有时,你去排雷,却会引爆新的雷。或者哪天你抵挡敌人进攻的雷却会变成自己撤退的雷区!

 

前两天上线一个新版本的时候,发现一个针对老版本的优化出了问题,感受良多,代码往往跟不上产品策略的变化。

 

这些雷好解决,大不了就是版本回退!但是有些雷却是太难解决了。这两天提供线上服务存储的cassandra节点出了问题,不知道某一天数据归整失败了。数据规整失败的原因看来应该是某个规整数据区间商品写入太大。通过库爬虫上线以后,每天要多写入800w的数据,8M* 10k(每个数据大小)就是90G,这里面的数据大部分都是重复的,归整完以后就只有一份,可惜不知道在某个时间点写失败了。于是悲剧了,在以后的几天里,几个爬虫的写入以每天200G+的速度蹭蹭的往上涨,3个1T的硬盘,每个都用到了75%,按照cassandra的归整方式,就没有足够的空间归整了,只能手工清除了。在这个时间点上,cassandra单个节点的性能也迅速下降,不停在在丢消息,由于对cassandra的同步机制没搞那么明白,所以不知道这些丢掉的消息会不会有数据同步的消息。更悲剧的是这里面的数据存有很多人工的数据是不能直接删除的,于是乎需要把数据读出来保存一封,写入到另外一个cassandra的节点上,让后清除这个节点的数据,然后启动这个节点,然后bootstrapping,数据就会自动同步了。

 

唉,第一次删线上的数据,2个多T,还是难免有很多顾虑的,提前写了很多脚本来读取,验证。rm -rf *的时候,心里还是一直在pray!

 

还好的就是到目前为止,没出现啥问题!

 

 

 

 

你可能感兴趣的:(优化,工作,脚本,存储,cassandra,产品)