一次异常断电造成磁盘阵列文件系统部分文件损坏而影响时序数据库加载的故障处理

一、异常情况描述

       项目所在地的新能源生产数据中心因为线路与UPS调整改造,数据服务器因为没停机就强行关机,造成kairosdb时序数据访问异常。

       异常结论:1、共享存储磁盘阵列xfs文件系统有损坏,造成不能加载;

                         2、kairsodb使用的cassandra 的keyspaces有异常,造成不能加载;

二、软件部署架构图

1、系统配置与告警数据:mysq关系数据库

2、时序数据:KairosDB数据库

3、报表分析数据:KairosDB数据库

4、Cassandra:大数据系列中的宽列式数据库,基于sstable结构,结构与HBase类似,分布式机制采用gossip算法;

5、双机热备软件:Keepalived;

三、排查过程

      1、共享存储的磁盘阵列没加载,开始经初步排查是因为前期keepalived 双机热备脚本本身有问题,把主机动态加载磁盘阵列的语句屏蔽了,如下图:

       

       然而发现手动挂载失败,挂载报错,提示结构需要清理,如下图:

       

       经网上查找,使用fsck命令可以清理,输入fsck /dev/sdb (磁盘阵列设备符),提示磁盘阵列类型为XFS filesystem,可以是用xfs_repair命令尝试修复。接着尝试输入xfs_repair   /dev/sdb,然后提示错误--ERROR: The filesystem has valuable metadata changes in a log which needs to be replayed.    

  

      使用 xfs_repair -L  /dev/sdb 命令再次进行修复,终于修复成功,并可以正常挂载 mount /dev/sdb /data

      

   2、修复磁盘阵列xfs文件系统后,启动kairosdb还是报错,提示

05-12|14:08:21.341 [Ingest worker-9] ERROR [BatchHandler.java:192] - All host(s) tried for query failed (tried: /172.10.200.13:9042 (com.datastax.driver.core.exceptions.UnavailableException: Not enough replicas available for query at consistency ONE (1 required but only 0 alive))),内容大概意思就是没有足够的副本可供查询,需要1个,但是实际为0。

     

      查看cassandra的数据目录/data/cassandra/data,竟然自动在kairosdb keyspaces(键空间,类似关系库下的数据库)下重新创建了一个实例,原来的数据文件实例访问不了。现象是整个kairosdb不能写入数据到cassandra,也查询不了数据。

     经多次排除法测试,第一个问题是kairosdb的配置文件kairosdb.properties中的kairosdb.datastore.cassandra.replication的复制因子设置成了0的缘故,

此参数为kairosdb对应的cassandra分布式存储的复制因子个数,并且只有在kairosdb第一次启动需要创建keyspaces键空间时才起左右,上述Not enough replicas available for query at consistency ONE (1 required but only 0 alive)))就是因为该参数为0,所有在自动创建的keyspaces造成了不能访问,当然该参数在键空间已经存在的时候的情况,不起作用。修复方面有2个:

1)可以把该参数设置为1,然后清除kairosdb的keyspaces,重新启动cassandra和kairosdb即可;

2)通过cassandra的cql命令把kairosdb的keyspaces的复制因子修改为1,或用nosql  manager for cassandra 在可视化下修改为1即可。

        

最后就是3.2T的keyspaces对应的数据的迁移修复,思路如下:

1、手动删除keyspaces下的自动创建的新实例id对应的相关文件夹;

2、通过nosql  manager for cassandra修改键空间下的表id,如下图:

与异常情况如下:与异常情况如下:

 

3、用cassandra bin下的nodetool工具重建索引和验证表对应的文件./nodetool rebuild_index(包括其他的表对应的文件夹)、./sstableverify kairosdb data_points(包括其他的表对应的文件夹),最后成功修复3.2T数据。

四、知识库补充

1、Cassandra可调节的一致性见文章(https://www.sohu.com/a/111111174_472869)

2、Cassandra nodetool常用操作见文章(https://blog.csdn.net/zhuwinmin/article/details/76063203)

3、Cassandra 宽列式数据库(与HBase同类型,sstable)学习网站(https://www.w3cschool.cn/cassandra/cassandra_drop_keyspace.html)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值