cassandra启动失败——cassandra总结(四)

  最近莫名其妙的cassandra不能启动了,查看登录日志后终于找到了原因。(登录日志位于与$CASSANDRA_HOME同级目录的cassandra文件夹中)

  先看下错误报告

ERROR [SSTableBatchOpen:2] 2015-11-26 21:59:06,933 FileUtils.java:447 - Exiting forcefully due to file system exception on startup, disk failure policy "stop"
org.apache.cassandra.io.FSReadError: java.io.IOException: Compressed file with 0 chunks encountered: [email protected]

  SSTable打开失败,原因是SSTable损坏了,看下老外的说法

Having some replication would surely help you to fix this without data loss but it would come with a price.

Despite all your effort you cannot manage to recover your corrupted sstable. So you decide to remove it from your file system to start Cassandra again. If you do not have replication your data is lost. But if you have replication on the cluster, you can possibly fetch the data from other nodes. That is what nodetool repair do !

So nodetool repair does not repair corrupted sstable. Basicallynodetool repair compare tables from node to node to find missing or inconsistent data and then repair it. You can find more information on how it works here.

However nodetool repair is very expensive, it is long and uses a lot of cpu, disk and network. There is this good post about repair benefits and drawbacks.

  遇到SSTable损坏这种问题解决办法就是删掉数据然后重启cassandra,由于我采用的单节点所以数据自然就没有备份了,很坑的说,不过好在只有几万条分析数据,再插入进去就好了。如果是集群的话就可以用nodetool repair从别的节点把备份数据取过来了,但是代价很大,会花费大量的时间,占用大量的CPU。所以最好还是做好备份了。

  在删除掉数据重启后,轻松启动成功。启动成功日志文件的最后一行表现是:

INFO  [Thread-2] 2015-11-27 16:30:52,550 ThriftServer.java:136 - Listening for thrift clients...

  

时间: 2024-11-07 09:40:35

cassandra启动失败——cassandra总结(四)的相关文章

解决Nginx启动失败

一.Nginx下载http://nginx.org/en/download.html 二.Nginx启动失败原因1.本人下载的是nginx-1.12.1(稳定版),下载完解压后,进入路径中,start nginx,发现窗口闪过.但是查找不到nginx进程. 2.进入 nginx-1.12.1\logs 路径下,打开error.log文件,发现有以下错误日志 2017/09/19 11:07:26 [emerg] 5580#3332: bind() to 0.0.0.0:80 failed (10

Mongodb分片配置服务器不同步导致mongos进程启动失败

生产环境中,使用的mongodb分片,由于突然断电,服务再起来的时候发现三个mongos进程中有一个启动失败,多次尝试仍不能启动.查看日志,内容如下: 大概意思是配置服务器configserver数据不同步. 解决办法: 杀死所有mongos进程 连接到每个分片的configserver,运行命令db.runCommand('dbhash') 找到MD5值,这时两个能正常运行的MD5值是一样的,不能正常运行的MD5和上面俩都不一样 删除不能正常运行的dbpath,将能正常运行的dbpath下的数

多学一点(十三)——解决Linux kdump服务启动失败

kdump 是 Linux Kernel 崩溃时的转储机制,简单理解就是在系统启动过程中如果 Kernel 因为某些原因崩溃了,kdump 就会负责记录日志以便排查原因.在 CentOS 6 等 Linux 发行版中,即便采用最小化安装, kdump 也会作为服务安装到系统中,此时可能因为我们对 Linux分配的内存的限制导致 kdump 服务开机启动失败,如图 1 所示: 图-1 kdump启动失败 解决 kdump 启动失败其实很简单,只要修改 grub.conf 文件,改变crashker

ORA-01078和LRM-00109问题导致ORACLE启动失败解决方法

操作环境 SuSE11 + ORACLE11gR2(11.2.0.3) 问题现象 新安装ORACLE启动失败,提示ORA-01078和LRM-00109错误.具体错误现象如下 SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/home/oracle/base/dbs/initora11g.ora'  问题分析 根据错误分析是查找不到参

CentOs 6.6里kdump启动失败的原因

在VMware中新安装了CentOs 6.6,重启系统发现kdump服务启动失败 先来说一下,什么是kdump kdump 是一种先进的基于 kexec 的内核崩溃转储机制.当系统崩溃时,kdump 使用 kexec 启动 到第二个内核.第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像.第一个内核保 留了内存的一部分给第二内核启动用.由于 kdump 利用 kexec 启动捕获内核,绕过了 BIOS,所 以第一个内核的内存得以保留.这是内核崩溃转储的本质. 启动失败的原因 查看 /etc

2016/07/07 apmserv5.2.6 Apache启动失败,请检查相关配置。MySQL5.1已启动。

因为要用PHP做一个程序,在本机上配PHP环境,下了个APMServ5.26,安装很简单,不再多说,装好后,启动,提示错误,具体是:“Apache启动失败,请检查相关配置.√MySQL5.1已启动”,然后就在网上找解决办法,倒是找到不少,但都没有解决问题,差点就想换一个集成环境了.不过知难而进一向是我的原则,最后终于解决了,现在把所有解决步骤整理出来,希望能对碰到同样情况的朋友有所帮助,如果有有朋友碰到新的情况,欢迎同我交流.另外如果大家有自已各方面经验,欢迎在阳关道网站上发布出来跟大家共享一下

Java tomcat启动失败(Servlet3.0 Web Project):A child container failed during start

Tomcat启动失败,失败全部信息: 五月 11, 2016 10:21:04 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:MyEL' did not find a matching prop

Tomcat启动失败的解决方法

在使用Tomcat的时候,经常会遇到启动失败的问题:解决方法:1.检查环境变量的配置,jdk的配置2.检查端口是否被占用. 关于环境变量的配置很容易搜到,如果按照网上的教程配置好了,但是还是启动失败的话,这时就需要检查端口是否被占用了,实际上十有八九是端口被占用了.下面介绍第二种方法:打开dos窗口,输入以下命令: netstat -abn || findstr "8080" 或者 netstat -aon || findstr "8080"a:显示所有的连接和侦听

Tomcat启动失败提示Servlet部署路径重复

用Java开发的项目,因为很简单,所以用的依然是Servlet.之前一切正常,但是新增了一个Servlet之后,部署到服务器,却总是启动失败,控制台打印的东西很多,但是分析发现主要错误应该是这个地方: Caused by: java.lang.IllegalArgumentException: The servlets named [RevelationServlet] and [cn.lzgd.servlet.RevelationServlet] are both mapped to the