楔子
某服务需要使用Zookeeper作为配置管理和服务注册与发现,今天突然发现服务不可用,病症就是无法连接zk,服务不断的重试,报如下的错误。(zk版本为3.4.10 单机部署)
定位
使用df -Th
查看文件的使用情况 , 发现磁盘空间满了,使用du -sh *
查看当前目录下各个文件及目录占用空间大小 ,发现有个日志文件占据了195G, oh my god!
果断删除该文件。然后重启zk,依然不能重启,查看zk得日志,发现如下的报错信息:
ERROR org.apache.zookeeper.server.persistence.Util: Last transaction was partial.
意思就是由于磁盘空间满了导致Zookeeper的最后一次事务性操作不完整导致无法重启。则么办?
先查看zk的配置文件,查看dataLogDir
的目录,如下:
进入到该目录的version-2
目录下,把大小为0(异常的)日志全部删除掉,文中已删除,然后就可重启成功,但是最后一个事务操作可能会破坏或者丢失。
结果如下所示: