1、 文档编号版 本 号V1.0密 级应急_数据库紧急处理手册XXX信息技术有限公司版本控制编号修订人修订时间版本号修订内容说明1 23第 8 页 共 10 页目录1 数据库故障紧急处理流程图22 数据库故障紧急的分析处理33 数据库异常处理查杀SQL处理53.1 目的53.2 适用范围53.3 执行时间53.4 流程说明63.5 自动化脚本原理及实现方法介绍73.6 技术部处理流程71 数据库故障紧急处理流程图2 数据库故障紧急的分析处理紧急场景:服务器掉电或其它硬件故障紧急处理:1、 如果服务器掉电或其它硬件故障,则直接切换数据库到备机运行。2、 把数据库浮动ip地址绑定到切换后的主机。预防措
2、施:1、 做好服务器硬件的选型工作,减少硬件出现问题的概率2、 做好服务器硬件方面的巡检工作,提前发现问题3、 保证数据库双机状态的可用性,保证切换的有效性。紧急场景:数据库服务器负载异常升高,检查操作系统日志/var/log/messages,如果确定出现系统内核bug,导致db2主进程出现问题紧急处理:1、 首先查看HADR备机的HADR状态,确定主备数据是否完全同步。2、 如果主备数据同步,启用备机提供服务,将主机浮动IP绑定在备机上;3、 如果主备数据不同步,则直接重启主机操作系统,然后启动数据库,重新绑定主机的浮动IP地址。预防措施:做好数据库服务器的硬件和操作系统选型工作,尽量减少
3、系统内核bug的出现。紧急场景:数据库服务器负载异常升高,有大量的数据库请求被阻塞,并且时间发生在数据库全备份结束时,可确定原因为数据库正在修剪备份历史文件紧急处理:1、 重启数据库实例,以中断备份历史文件的修剪操作2、 或者停止应用服务器,减少数据库请求,以使修剪操作尽快完成预防措施:定期检查数据库备份历史文件大小,如果比较大(经验值超过10M),则在凌晨或者停机维护时使用prune命令修剪此文件。紧急场景:数据库服务器负载高,发现存在耗时和耗资源的SQL语句紧急处理:1、 视情况决定是否将此连接杀掉2、 分析此SQL,如果SQL写的有问题,则要求相应开发人员修改SQL;如果统计信息有问题,
4、则视情况重新收集统计信息;如果索引创建有问题,则视情况创建索引。预防措施:定期巡查各库的SQL语句并进行优化 紧急场景:表空间状态异常,处于offline和前滚暂挂状态 紧急处理:确定表空间容器文件的权限是否异常,如果权限有异常,将权限更改后,前滚数据库至日志末尾预防措施:严禁修改数据库文件的权限(包括表空间容器文件、日志文件等)紧急场景:表空间状态异常,处于备份暂挂状态 紧急处理:备份异常表空间预防措施:1、 严禁在生产数据库使用未带copy yes选项的load命令2、 带有复制或者HADR的环境中,严禁使用load 命令紧急场景:表状态状态异常,处于reorg暂挂状态 紧急处理:立即对异
5、常表进行重组预防措施:1、 表结构变更操作必须在测试环境严格测试后再在生产环境执行2、 严禁在生产数据库中,进行删除列、设置已有字段非空等的表结构变更操作。3 数据库异常处理查杀SQL处理3.1 目的为了解决部分应用(SQL语句)导致数据库负载过高,甚至导致数据库无法响应,从而影响所有业务,特制定该流程。3.2 适用范围该流程的由系统部牵头,技术部、产品部协助,共同制定。当发现异常事件时启动该流程。异常事件定义:1、 暂定为包含一次数据更改(包括插入,更新,删除数据)超过5000行的SQL语句的执行(该操作将会被kill掉)。2、 大负载的SQL语句。暂定为一个数据查询操作行读超过400万条的
6、SQL语句的执行(此操作会被记录下来,但是不会被kill掉)。3.3 执行时间2009-6-22开始执行3.4 流程说明 格式如下:日期(系统部填写)发起的机器(系统部填写)执行用户(系统部填写)执行时间(系统部填写)更新记录数(系统部填写)SQL语句(系统部填写)影响的业务(技术部填写)解决方案(技术部填写)何时优化(技术部填写)效果(系统部在填写)6月15号效果不明显,XXX 技术部就相关信息进行分析,如果需要其他部门配合,由技术部牵头。 当天下午15:30之前,由技术部填写该表(影响的业务、解决方案),全部回复收件人。 系统部数据库组进行存档,并对效果进行检验,并补充填写“效果”一列,并
7、全部回复给收件人。 如果相同的异常事件连续发生两天,以上邮件必须抄送给系统部与应用中心负责人。 如达不到效果,由系统部数据库组重新发起该流程。3.5 自动化脚本原理及实现方法介绍1) 原理编写shell脚本通过数据库快照表函数监控数据库的运行,分析快照并抓取我们认为运行异常的事务,记录下该事务的相关信息并取得该事务的application handle。在shell中执行force application停止该异常事务的执行。2)实现监控数据库并抓取异常事务SELECT AGENT_ID ,ROWS_READ,STMT_ELAPSED_TIME_MS,STMT_TEXT FROM TABLE(
8、 SNAPSHOT_STATEMENT(mobile, -1) as dynSnapTab where STMT_START is not null and STMT_TEXT is not null and minute(current timestamp -STMT_START)1 or ROWS_READ50000停止异常事务的执行db2 force applications($id)3.6 技术部处理流程 平台负责人(XX)接到系统部数据库小组“数据库异常更新”的通知,着手处理。 13:30前,根据系统部提供的“异常数据库更新”发起的机器IP、服务名称、SQL语句,初步判定异常更新SQL语句对应的应用、根据SQL语句定位到相应的代码。(如果无法判断,则召集相关人员讨论) 根据分析结果,找到负责相应应用的小组或开发人员,评估该SQL语句的影响到的业务、解决方案、解决方案工作量、承诺的解决时间(上线时间)。 15:00前,平台负责人(张礼文和李均柠)根据讨论、分析结果,按照“数据库异常更新处理”的要求填写邮件,回复给“数据库异常更新”的所有收件人 和 承诺解决本“数据库异常更新”的负责人。 承诺解决本次“数据库异常更新”的负责人跟进优化进度,在进度出现问题或正常上线时通知给“数据库异常更新”的所有收件人。