Vertica集群中一台服务器故障,导致节点DOWN了。
通过admintools图形节点的Restart vertica on Host功能重启节点服务,一直失败。
重新Stop整个数据库,然后再Start,还是不行,其它节点都正常,那个故障节点还是DOWN。
查看日志,提示 Data consistency,数据一致性问题,磁盘文件有损坏?
经过和原厂技术沟通,通过命令行启动,通过--force参数忽略问题,强行修复。
./admintools -t start_db --database=bigdata --force
这次正常了,故障节点显示 RECOVERING 状态,说明在恢复数据,通过以下命令查看节点状态:
./admintools -t list_allnones
数据恢复的过程可能较长,通过以下SQL可以查看具体进度:
select * from projection_recoveries where progress>1;
由于故障期间发生过很多DELETE操作,需要一点点地同步,最终花了3个小时才彻底恢复数据,服务正常。
理论上来说,Vertica是集群高可用的,k-safe=1,数据双副本,挂掉一个节点,不影响整体使用。
但是这次发现,细节问题比较多,SELECT语句有时正常,有时非常慢,慢10倍都不止,甚至 delete from t1 where t_date=(select max(t_date) from t1) 这样的语句会无限期死锁,没有响应,正常情况下都是1秒完成。
该情况已反馈给Vertica原厂。