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