生产平台集群最近有台主机的实例宕了几天,并且更换过主机的阵列卡。在主机维护完成后我侧进行恢复实例的操作发现有个实例无法恢复。
gprecoverseg操作会有下列提示
只是简单的提示恢复失败没有详细的信息
根据提示的gpseg241执行命令
gpstate -c | grep gpseg241
得到primary实例所在的主机和端口号
登入对应的主机
根据端口好使用ps -ef命令可以到实例日志的路径,查看日志。
根据恢复操作报错的时间点选择日志文件查看
通过查看日志的提示信息可以看出来是在一个路径下的数据块文件产生了坏块。
尝试使用mirror实例的同名文件进行覆盖。
在校验文件md5sum的值时发生报错,随后使用ls命令发现在2435928文件夹下的文件基本都报同一错误。
百度了一下这个报错是结构需要清理,因为是生产平台并未做这个操作而是反馈主机侧修复。
网上找到的步骤如下:
1) 首先 df -t 查看出错的挂载点对应的文件系统和文件系统类型
2) 然后 umount 这个文件系统
比如: umount /dev/sda1
3) 然后根据文件系统类型不同操作不同
比如 ext4:
fsck.ext4 /dev/sda1
或者 xfs:
xfs_repair /dev/sda1
4) 最后重启 reboot
此步骤仅供参考
修复硬盘后再执行gprecoverseg命令就正常了,另外如果修复失败就需要格式化出问题的文件系统,然后再做原主机的备机替换就是执行gprecoverseg -F 命令。