应急预案:宿主机磁盘满导致女娲服务异常处理应急预案

应急预案:宿主机磁盘满导致女娲服务异常处理应急预案

更新时间:2020-07-15 10:36:51

1. 概述

本文主要介绍在专有云环境中,宿主机磁盘满导致女娲服务异常的处理方法。

1.1. 适用范围

  • 专有云V2企业版,女娲
  • 专有云V3企业版,女娲

1.2. 用户告知

  • 适用平台:x86、ARM
  • 授权级别:L2(二线技术支持工程师)
  • 临时或固化方案:临时
  • 操作复杂度:低
  • 预估执行时长:30分钟
  • 业务影响:否
  • 风险等级:中

2. 问题描述

宿主机磁盘满、TxnLog文件为空或被写坏无法解析,异常文件在nuwa进程重新加载时,检查不通过,导致Nuwa节点服务异常。

以下两种情况都是宿主机磁盘满导致的,需先清理宿主机磁盘,磁盘使用率降低后再按照实施步骤操作。

  • 执行巡检脚本,有大小为0的TxnLog文件,在“Unable to load database on disk java.io.EOFException”报错下方存在以下报错信息。
    • Unexpected exception, exiting abnormally
    • at java.io.DataInputStream.readInt
    • empty txnlogs found
  • 执行巡检脚本,发现TxnLog文件被写坏无法解析,日志报错如下:
    Last transaction was partial

3. 解决方案

3.1. 环境检查

检查nuwa服务

铜雀巡检报nuwa服务异常,需要登录集群AG服务器,检查nuwa服务。

  1. 登录集群AG服务器,执行以下命令,生成女娲Master的iplist文件。
    tj_show -r nuwa.NuwaZK# -ip > /tmp/iplist.nuwa
  2. 执行以下命令,检查角色是否正常。
    pssh -i -h /tmp/iplist.nuwa "echo srvr | nc localhost 10240 | grep Mode"
    系统显示类似如下,发现一个节点nuwa服务异常。
  3. 将nuwa巡检脚本的压缩包nuwa_service_checker.tar上传到集群AG服务器的/home/admin目录下,解压后执行以下命令,进行巡检。
    ./nuwa_service_checker
    出现以下报错。
    • 执行巡检脚本,有大小为0的TxnLog文件,日志报错如下:
      • Unexpected exception, exiting abnormally
      • at java.io.DataInputStream.readInt
      • empty txnlogs found
    • 执行巡检脚本,TxnLog文件被写坏无法解析情况,日志报错如下:
      Last transaction was partial

检查异常节点的宿主机空间

登录异常服务器,执行以下命令,查看nuwa宿主机的空间已满,需要先进行清理。

df -h

系统显示类似如下。

3.2. 实施步骤

有大小为0的TxnLog文件的处理方法

先清理宿主机磁盘空间,使磁盘使用率降低。在“empty txnlogs found”错误提示的右侧为空文件,将此文件删除或者使用mv命令重命名即可。

TxnLog文件被写坏无法解析

最后一个TxnLog文件不完整,被写坏无法解析,写的过程中磁盘空间不足,这个情况和空TxnLog文件不一样,直接删除会删除一些有用数据。需要先备份异常节点的redo日志,让这个异常节点的所有数据从其他节点同步过来,避免删除部分TxnLog,产生数据分叉。

说明:需先清理宿主机磁盘空间,使磁盘使用率降低后,需要到异常的机器上执行以下操作。

适用于专有云V3环境
  1. 登录异常节点的服务器,执行以下命令,停止该节点nuwa进程。

    /apsara/cloud/tool/tianji/apsarad stop nuwa
    系统显示类似如下。
  2. 依次执行以下命令,备份该节点女娲持久化数据。
    mv /apsarapangu/disk1/version-2  /apsarapangu/disk1/bak.version-2
    mv /apsarapangu/disk2/version-2  /apsarapangu/disk2/bak.version-2
  3. 执行以下命令,启动该节点nuwa进程。
    /apsara/cloud/tool/tianji/apsarad start nuwa
    系统显示类似如下。
适用于专有云V2环境
  1. 登录异常节点的服务器,执行以下命令,停止该节点nuwa进程。

    /home/admin/dayu/bin/apsarad stop nuwa
  2. 依次执行以下命令,备份该节点女娲持久化数据。
    mv /apsarapangu/disk1/version-2 /apsarapangu/disk1/bak.version-2 
    mv /apsarapangu/disk10/version-2 /apsarapangu/disk10/bak.version-2
  3. 执行以下命令,启动该节点nuwa进程。
    /home/admin/dayu/bin/apsarad start nuwa

3.3. 结果验证

登录集群AG服务器,执行以下命令,执行巡检脚本,确认无异常输出。

./nuwa_service_checker

系统显示类似如下。

4. 回滚方案

无需回滚,操作前的女娲已是非正常状态。