当数据库发生故障时,你会如何进行应急处理?本文通过梳理南大通用GBase 8a数据库系统使用中可能出现的各种异常情况,以期帮助大家应对GBase 8a数据库使用中的突发故障,提供基本的问题解决思路。
3.资源使用情况异常
3.1Swap使用率增高
现象描述
集群中大量节点Swap使用率增高
现象分析
GBase 8a软件异常,或者异常SQL导致GBase 8a内存溢出,使用内存不断增加,不及时处理会导致Swap空间占满,系统异常宕机。
应急操作流程
此种异常大多由于GBase 8a软件或异常SQL导致,需要通知应用协助排查问题原因。
1)运行部门联系开放平台协助排查问题,通知GBase现场支持协助排查问题;
2)运行部门和GBase现场支持分析系统中运行的异常SQL。
3)运行部门停止产生问题的SQL。
4)开放平台清理操作系统内存,降低Swap使用率。
5)GBase现场支持协助开发优化异常SQL
6)运行部门避免未经测试的SQL运行在生产环境
3.2 CPU使用率增高
现象描述
集群中大量节点CPU使用率增高,IO接近饱和。
现象分析
CPU的大部分时间花在系统切换上,GBase 8a同时处理的并发过高,并且存在几个超长任务(超过2小时未执行完)。
应急操作流程
此种异常大多由于业务调度的并发过高引起,会导致任务处理的整体速度降低。
1)运行部门联系开放平台协助排查问题,通知GBase现场支持协助排查;
2)运行部门和GBase现场支持分析系统中并发运行的任务数。
3)如果并发过高,运行部门降低并发数。如果存在超长SQL,商量是否需要先杀掉,以避免拉低整体性能。
4)GBase现场支持协助开发优化异常SQL,避免未经测试的SQL运行在生产环境。
5)运行部门避免在统一调度系统之外,手工调起作业。
3.3 磁盘IO异常繁忙
现象描述
集群中单个节点或多个节点IO异常繁忙。
现象分析
集群单个节点或多个节点DISKBUSY原高于其他节点(如超过12时间DISKBUSY高于80%)。
应急操作流程
此种异常大多由于硬盘故障或硬盘背板、RAID卡故障引起,会导致任务处理的整体速度降低。
1)运行部门联系开放平台确认问题,并进行后续处理;
2)硬件厂商抓取硬件运行日志,并分析。
3)如果并发过高,运行部门降低并发数。如果存在超长SQL,商量是否需要先杀掉,以避免拉低整体性能。
4)厂商分析日志确定故障硬件后,更换硬件,如更换硬件需停止操作系统,需停止集群服务。
5)GBase现场支持恢复服务。
3.4 磁盘空间满或超过阈值
现象描述
集群中单个节点或多个节点磁盘空间满或使用超过80%。
现象分析
集群中单个节点或多个节点磁盘空间使用超过80%,因GBase 8a集群数据节点须保留20%~30%作为临时空间,磁盘总空间满后,部分SQL会报错,甚至可能到会GBase 8a服务进程crash。
应急操作流程
一般情况下短时间内磁盘使用大幅上升是由笛卡尔乘积SQL或GBase 8a执行计划bug导致。
1)运行部门分析GBase 8a临时空间使用情况。
2)运行部门分析运行SQL情况,确定哪条SQL导致。
3)Kill SQL,观察空间是否释放。
4)如笛卡尔乘积,则反馈开发部分进行处理;如GBase执行计划问题,反馈数据库厂商,要求提供短期解决方案及后期修复计划。