GaussDB(DWS)《ROACH小课堂Ⅰ测试方法篇之故障测试》

举报
一剑战八荒 发表于 2021/09/28 11:51:01 2021/09/28
【摘要】 为ROACH故障测试提供基本思路,方法。

ROACH故障测试

  ROACH作为备份恢复工具,在发生故障后的数据恢复能力尤为重要,这也是大多数需要用到恢复的场景。所以,对于故障的验证,不仅仅需要保证故障类型的全面,还需要保证在备份恢复过程时间段上的充分验证。

1      常见故障类型及注入方式

故障类型

注入方式

gs_roach进程故障

kill -9 强杀roach进程

CN/DN/GTM集群实例故障

mv 数据库实例二进制文件+kill -9实例进程

网络故障

ifdown/ifup 网卡闪断

文件权限不足

root用户chmod 000修改文件权限

磁盘满/资源不足

dd if=/dev/zero of=big_file bs=1M count=20000,生成一个20GB的文件

宕机/重启

reboot

 

2      ROACH故障测试方法

2.1      备份恢复过程关键点注入故障

在备份或者恢复发起后,根据备份恢复流程分析拆解出的关键流程节点,通过匹配$GAUSSLOG/roach/agent日志中打印的信息,精准注入故障。以集群级备份为例:

#1启动gs_roach进程

Creating Thread Roach Agent

#2开始准备备份文件清单

RAGENT_EXEC_PREPARING_METADATA come

#4开始备份行存文件

Copying the data files

#5开启延迟XLOG回收

start delay xlog recycle before xlog copy

#6开启延迟DDL回收

start delay ddl recycle before col file copy

#7create barrier

Setting agent state to \[AGENT_CREATING_BARRIER\]

#8开始备份XLOG

RAGENT_EXEC_BACKUP_XLOGFILES come

#9关闭延迟XLOG回收

stop delay xlog recycle after having copied all needed xlog segments

#10开始备份列存

Start backup table colfiles for physical fine grained backup

#11关闭延迟DDL回收

stop delay ddl recycle after having copied all col files

脚本实现思路:循环查询日志,匹配关键信息,当关键信息匹配成功后,立即执行故障注入。eg.

flag=0;while [[ $flag -eq 0 ]];do file_name=`ls $GAUSSLOG/roach/agent/|grep "current.log"`;if [[ -f $GAUSSLOG /roach/agent/$file_name ]];then flag=`cat $GAUSSLOG /roach/agent/$file_name|grep "enter the callback of rowstore copy"|wc -l`; fi; if [[ $flag -eq 1 ]];then cm_ctl stop &&cm_ctl start; fi; done

2.2      备份恢复过程中随机注入故障

黑盒精准注入故障,并不能保证所有流程分支都被覆盖。并且,人工分析识别也存在认知限制。因此,精准故障注入之外,还需要长时间持续验证备份恢复成功中,随机点故障注入。

脚本实现思路:设置随机的时间间隔,进行故障注入。(需要根据环境上的数据量,先摸底一次备份的时长,然后设置合理的时间间隔)

Loop:

<a.在备份进程启动后生成随机数,sleep随机数时间后,注入随机类型故障;

<b.检测roach进程退出后,检测是否有core文件,并修复集群状态;

<c.确认集群状态满足断点续做(重入)入口条件后,执行断点续做(重入)

<d.确认最终执行结果,校验数据一致性;

3      ROACH故障测试关注点

1.对于不支持断点续做的备份恢复,操作因为故障注入中断后,要能重入成功。并且恢复后数据要一致且没有core产生,集群其他的OM和业务功能不受影响;

2.对于支持断点续做的备份恢复,操作因为故障注入中断后,要能直接断点续做成功。并且恢复后数据要一致且没有core产生,集群其他的OM和业务功能不受影响;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。