单节点Zookeeper的zookeeper_data文件夹为空问题咨询
单节点ZooKeeper dataDir下version-2目录无文件的触发场景
该现象仅出现在单节点ZooKeeper部署模式下,和多节点ZK集群的持久化逻辑存在差异,具体触发场景如下:
- 快照触发阈值未达标
ZooKeeper默认snapCount配置值为100000,需要累积10万条事务日志后才会触发内存数据快照写入到dataDir对应的version-2目录。如果当前ZK仅处理了少量Solr节点注册、配置同步类的轻量事务,远未达到快照触发阈值,就不会生成快照文件。多节点ZK集群因为需要同步follower节点状态,会在leader选举、全量数据同步等场景提前触发快照写入,所以多节点集群环境不会出现该问题。 - dataDir目录权限配置错误
事务日志写入dataLogDir成功不代表ZK进程对dataDir有写入权限,两个目录的权限为独立配置。可以执行ps -ef | grep zookeeper确认ZK运行用户,再执行ls -ld <zookeeper_data目录路径>核对目录的所属用户和权限配置。 - 刷盘配置未生效
如果zoo.cfg中配置了forceSync=no,且ZooKeeper运行过程中从未触发过优雅停机,内存中的快照数据不会强制刷入磁盘。多节点ZK集群为了保证分布式数据一致性,默认会强制刷盘忽略该配置,所以不会出现该问题。 - 配置修改后未重启进程
如果ZooKeeper启动后才修改zoo.cfg中的dataDir配置未重启进程,新配置的目录不会被写入,此时你检查的路径并非当前ZK实际使用的dataDir路径。可以查看ZK启动日志确认当前生效的dataDir配置是否和检查路径一致。
验证方法:通过
zkCli.sh连接到ZK实例后执行sync /命令手动触发快照,再检查version-2目录是否有文件生成,若仍无文件可排查ZK运行日志中的IO类报错信息。
内容的提问来源于stack exchange,提问作者yaswanth kumar
相关产品推荐
相关产品推荐

