GaussDB(DWS) GDS导入容错详解(gaussdbdws8.1客户端安装步骤)
687
2022-05-29
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:
3 ROACH故障测试关注点 1.对于不支持断点续做的备份恢复,操作因为故障注入中断后,要能重入成功。并且恢复后数据要一致且没有core产生,集群其他的OM和业务功能不受影响; 2.对于支持断点续做的备份恢复,操作因为故障注入中断后,要能直接断点续做成功。并且恢复后数据要一致且没有core产生,集群其他的OM和业务功能不受影响; EI企业智能 Gauss AP 数据仓库服务 GaussDB(DWS)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。