提示
X
本案例来自tskb,请前往tskb修改源内容:立即前往
'>

进阶排查-步骤一:检查副本是否一致

|

问题描述

检查副本完整性是否一致

有效排查步骤

排查数据同步问题,第一步一定要检查副本完整性
检查副本完整性的目的是为了确认,数据是否存在双点导致无法同步完成,如果没有双点(脑裂)那么一般是环境问题导致的无法正常同步,比如磁盘故障导致需要同步的数据无法正常读写,或者数据同步任务异常、环境其他异常等

解决方案

一、检查副本完整性
1、检查所有主机副本完整性
5.8.6之前版本检测虚拟存储主机副本一致性:
vs_cluster_cmd.sh e "/sf/vs/bin/vs_localhost_checkok.js ;echo \$?"
检测结果不为0则不正常

5.8.6及之后版本检测主机副本一致性,在任意主机上执行如下命令
for b in $(gluster v i | grep host- | awk -F: '{print $1}' | grep -Eo '[0-9]+'); do vs_rpc_tool --cmd check --brickno "$b"; done  

2、排除故障主机检查副本完整性
如果有磁盘或者主机离线可按照下面命令过滤主机检查:
for b in $(gluster v i | grep 改成故障主机名 | awk -F: '{print $1}' | grep -Eo '[0-9]+'); do vs_rpc_tool --cmd check --brickno $b --exclude yes; done

3、排除故障磁盘检查副本完整性
当客户环境有一块磁盘离线时,需要判断除故障磁盘外的其他副本是否正常
查看所有brick:vs_rpc_tool -c clnt

排除故障磁盘检查副本完整性
vs_rpc_tool --cmd check --brickno 18 --exclude yes   (18需要更换成对应磁盘的id)


二、检查副本完整性后如何处理
情况一(vs3.0以后):所有主机副本完整性检查一致,但是界面数据同步任务卡主
【高危】一定要确认副本一致性没问题才执行如下操作:
先执行vsmgr volume master确认卷主控,然后SSH上去再执
volume_id=`jq -r '.volume_id' /sf/cfg/vs/volume.json`;super_zkcli.py rm /volumes/$volume_id/dts; vs_cluster_cmd.sh x /sf/vs/etc/init.d/dts-server restart; sleep 6; vsmgr dts-taskview clear-conf $volume_id; vs_cluster_cmd.sh e "rm /sf/cfg/vs/disk_fault/* -rf"

情况二(vs3.0以后):排除故障主机或磁盘后副本不一致
此时需要看不一致的数据具体是什么文件,有不同步数据文件会直接报错出来,如下图
1、如果检查出是./vs/shard/的文件,需要查看是哪个文件异常,可以使用命令检查文件的具体路径
vsmgr dts-taskmonitor gfid2path  xxxxxxxxx
如下图
(1)、如果是闲置虚拟机或者回收站文件可以找客户确认是否能删除
(2)、如果是需要使用的虚拟机,则进一步确认,文件是否存在双点(两个副本同时故障,此时同步肯定无法完成)
(3)、如果检查文件在vs回收站,可通过下列命令清理
vsmgr trash-tool show    #查看vs回收站里的文件
vsmgr trash-tool clear    #清空vs回收站,清理前需要客户同意
vsmgr trash-tool recycle xxxx  #指定清理某一个文件

2、检查是否存在数据双点(脑裂
方法一:
IFS=$'\n'; for f in $(find /sf/data/vs/local/*/* -name "*.qcow2*"); do /sf/vs/bin/getfattr -m . -d -e hex "$f" 2>/dev/null | grep file_status && echo "$f"; done
方法二:
find /sf/data/vs/gfs/rep2/ -type f 1>/dev/null
如果是2主机以下或者2主机的脑裂,参照链接处理;
如果是3主机或者3主机以上的脑裂,需要vs研发协助处理
如何查看是否是T文件脑裂,参考以下案例库:(vs3.0以下)

3、进入下一步排查进阶排查-步骤二

情况三(vs3.0以上):所有主机副本完整性检查不一致,排除故障主机或磁盘后副本一致
1、根据情况二检查不一致的文件
检查存储backup目录下的metadata备份是否过多,使用命令清理元数据备份

find /sf/data/vs_vol_rep2/backup/metadata/ -mtime +10 -name "*.mbk"  -exec rm -f {} \;
标红的挂载点需要修改,不同环境,路径不同
2、可以检查界面数据同步任务是否正常运行,如果正常则继续观察一段时间()
解决方案:进入下一步排查(进阶排查-步骤二

情况四(vs3.0以下):副本完整性检查只有1台主机副本完整性检查返回1
1、可以在today目录下查看该脚本的日志,看具体是哪台虚拟机的文件检测失败了
/sf/log/today/vs/vs_localhost_checkok.js.log
2、对应文件是否可以删除解决
3、进入下一步排查(进阶排查-步骤二

建议与总结

如果检查出是./vs/shard/的文件,需要查看是哪个文件异常,可以使用命令检查文件的具体路径
vsmgr dts-taskmonitor gfid2path  xxxxxxxxx

我要分享
文档编号: 251295
作者: admin
更新时间: 2023-05-26 19:30
适用版本: