中信登数据库及主机故障应急手册0608V1786.docx
《中信登数据库及主机故障应急手册0608V1786.docx》由会员分享,可在线阅读,更多相关《中信登数据库及主机故障应急手册0608V1786.docx(36页珍藏版)》请在冰豆网上搜索。
中信登数据库及主机故障应急手册0608V1786
中国信托登记有限责任公司
数据库及主机应急故障手册
单位全称:
恒生电子股份有限公司
地址:
杭州市滨江区江南大道3588号
时间:
2017年06月
**数据库故障整体处理流程图3
**Oracle数据库故障应急流程4
**使用RMAN备份数据库4
**数据文件损坏,恢复流程4
**控制文件损坏恢复5
**日志文件损坏恢复5
**数据坏块恢复6
**数据误操作,恢复流程6
**数据表误删除,恢复流程7
**由于性能缓慢需要杀掉部分会话的操作流程7
**由于性能缓慢需要重启实例的操作流程8
**RAC无法正常启动,切换到备库流程8
**MYSQL数据库故障应急流程9
**MySQL服务器运行缓慢,需要紧急释放资源9
**MySQL数据库由于误操作,需要恢复数据9
**MySQL服务在一台主机上无法启动10
**MySQL服务在两台集群主机上均无法启动成功,把MySQL切换到备库10
**方案概述10
**故障分类10
**故障应急处理流程11
**故障排错流程12
**物理机故障排错流程12
**虚拟机故障排错流程12
**通过查看事件及日志分析虚拟机故障原因:
14
**进入系统分析虚拟机故障原因:
15
**系统能够正常访问,但文件系统利用率过高16
**Linux系统中服务无法启动17
**系统中swap使用率过高17
**LVS负载节点出现故障18
**LVS部署主备冗余图例18
**公网部署18
**网站后台应用19
**预登记系统19
**LVS负载节点状态监控19
**NFS节点21
**查看nfs进程是否正常:
21
**后期维护:
22
**虚拟化主机23
**虚拟化主机部署图23
**冷备部署23
第一章数据库故障
一.1数据库故障整体处理流程图
数据库无法启动
数据误操作
性能缓慢
切换到备库
用闪回技术恢复
数据异常类故障
启动类故障
性能类故障
故障处理完毕,通知相关业务进行验证
杀掉部分会话
或重启实例
检查日志
进行修复
一.2Oracle数据库故障应急流程
一.2.1使用RMAN备份数据库
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
创建备份目录
mkdir–p/home/oracle/backup/{data,arch}
1分钟
DBA
2
Rman连接数据库
rmantarget/
1分钟
DBA
3
使用脚本备份数据库
run{
allocatechannelc1typedisk;
backupincrementallevel0skipinaccessible
format'/home/oracle/backup/data/back_%s_%p_%T_%d'
databaseplusarchivelog
format'/home/oracle/backup/arch/arclogback_%s_%p_%t_%d' ;
releaseCHANNELc1;
}
视数据量大小而定
DBA
一.2.2数据文件损坏,恢复流程
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
关闭数据库
Shutdownimmediate;
1分钟
DBA
2
删除数据文件,模拟数据文件损坏
[root@trsdb1~]#su-grid
[grid@trsdb1~]$asmcmd
ASMCMD>cdDATADG
ASMCMD>cdTRSDB
ASMCMD>cdDATAFILE
ASMCMD>ls
ASMCMD>rmUSERS.265.945611723
5分钟
DBA
3
恢复数据文件
run{
startupforcemount;
sql'alterdatabasedatafile5offline';
sql'alterdatabaseopen';
restoredatafile5;
recoverdatafile5;
sql'alterdatabasedatafile5online';
}
视数据量而定
DBA
4
验证数据文件状态
Selectfile_name,statusfromdba_data_files;
1分钟
DBA
一.2.3控制文件损坏恢复
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
关闭数据库
Shutdownimmediate;
1分钟
DBA
2
删除控制文件,模拟数据文件损坏
[root@trsdb1~]#su-grid
[grid@trsdb1~]$asmcmd
ASMCMD>cdDATADG
ASMCMD>cdTRSDB
ASMCMD>rm*.ctl
5分钟
DBA
3
恢复控制文件
run{
startupnomount;
restorecontrolfilefromautobackup;
alterdatabasemount;
recoverdatabase;
alterdatabaseopenresetlogs;
}
5分钟
DBA
4
检查控制文件信息
selectname,resetlogs_time,controlfile_created,controlfile_sequence#,controlfile_change#fromv$database;
一.2.4日志文件损坏恢复
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
关闭数据库
Shutdownimmediate;
1分钟
DBA
2
删除日志文件,模拟日志文件损坏
[root@trsdb1~]#su-grid
[grid@trsdb1~]$asmcmd
ASMCMD>cdDATADG
ASMCMD>cdTRSDB
ASMCMD>rm*.redo
5分钟
DBA
3
恢复日志文件,
在sqlplus下执行
shutdownimmediate;
startupmount;
recoverdatabaseuntilcancel;
alterdatabaseresetlogs;
5分钟
DBA
4
检查日志文件信息
selectgroup#,thread#,status,first_change#,next_change#fromv$log
1分钟
DBA
一.2.5数据坏块恢复
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
创建一个包含一个数据文件的测试表空间
Createtablespacetestdatafile‘+DATADG/trsdb/datafile/test01.dbf’size10M;
1分钟
DBA
2
在刚才创建的表空间中新增一张表
Createtabletestasselect*fromdba_objects;
5分钟
DBA
3
使用RMAN备份数据
run{
allocatechannelc1typedisk;
backupincrementallevel0skipinaccessible
format'/home/oracle/backup/data/back_%s_%p_%T_%d'
databaseplusarchivelog
format'/home/oracle/backup/arch/arclogback_%s_%p_%t_%d' ;
releaseCHANNELc1;
}
5分钟
DBA
4
关闭数据库
Shutdownimmediate
1分钟
DBA
5
模拟坏块
使用ultraedit编辑test01.dbf数据文件的中间部分制造坏块
2分钟
DBA
6
启动数据库
startup
1分钟
DBA
7
扫描坏块
使用selectcount(*)fromtest;对表做全表扫描
2分钟
DBA
8
获取坏块的文件号与块号
做全表扫描时数据库会报错,报错信息包含损坏的数据文件和数据块
1分钟
DBA
9
用rman连接数据库,执行恢复操作
blockrecoverdatafile数据文件号block坏块号;恢复坏块
1分钟
DBA
一.2.6数据误操作,恢复流程
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
获取当前系统时间
Selectsysdatefromdual;
1分钟
DBA
2
对数据做一系列修改操作并提交
Updatetestsetobject_id=1;
Commit;
2分钟
DBA
3
查看数据正常的时间点
selectobject_idfromtest
asoftimestamp
to_timestamp('2017-06-0415:
51:
22','yyyy-mm-ddhh24:
mi:
ss');
1分钟
DBA
5
在表上激活
行移动功能
altertabletestenablerowmovement;
1分钟
DBA
6
把表闪回到误操
作前的时间点
Flashbacktabletesttotimestampto_timestamp('2017-06-0415:
51:
22','yyyy-mm-ddhh24:
mi:
ss');
视日志量而定
DBA
7
检查数据是否恢复正常
Selectobject_idfromtest;
视日志量而定
DBA
一.2.7数据表误删除,恢复流程
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
删除测试表
Droptabletest;
1分钟
DBA
2
确定被删除对象在回收站中的名称
Showrecyclebin;
1分钟
DBA
3
如果只有一个同名的对象,则用对象名进行闪回
Flashbacktabletesttobeforedrop;
1分钟
DBA
4
如果存在多个同名的对象,则用recyclebin_name进行闪回
flashbacktable"BIN$TFoFBdZITOPgUwsKCgrXWg==$0"tobeforedrop;
1分钟
DBA
一.2.8由于性能缓慢需要杀掉部分会话的操作流程
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
登录数据库
sqlplus/assysdba
1分钟
DBA
2
生成杀会话脚本
select'altersystemkillsession'||''''||sid||','||serial#||''''||';'fromv$sessionwhereusername=‘WEBSITE’andwait_class<>‘IDLE’;
1分钟
DBA
3
杀掉会话
批量执行上一步生成的脚本
5分钟
DBA
一.2.9由于性能缓慢需要重启实例的操作流程
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
关闭实例
srvctlstopinstance-dzxdweb-izxdweb1
3分钟
DBA
2
启动实例
srvctlstartinstance-dzxdweb-izxdweb1
3分钟
DBA
一.2.10RAC无法正常启动,切换到备库流程
序号
恢复步骤
相关命令
预计使
用时间
执行岗位
备注
1
把dataguard备库切换为主库
在主库上把未发送到备库的REDO日志都FLUSH到备库,如果主库不能打开的话,能启动到MOUNT状态也可以FLUSH
Altersystemflushredoto
zxdweb19;
15分钟
DBA
检查归档日志的GAPS
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
把处于GAPS中的归档日志拷贝到备库,然后在备库注册它
ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec2';
在备库停止REDOAPPLY
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
准备激活备库
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
开始激活备库
ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;
把备库切换成主库
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
把备库打开
Alterdatabaseopen;
2
应用重
新配置
修改应用的TNS数据库连接,重启应用
ZXDWEB19=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.19)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=zxdweb19)
)
)
5分钟
开发
一.3MYSQL数据库故障应急流程
一.3.1MySQL服务器运行缓慢,需要紧急释放资源
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
杀掉当前所有的MySQL连接
mysqladmin-uroot-pmysql778MJUprocesslist|awk-F"|"'{print$2}'|xargs-n1mysqladmin-uroot-pmysql778MJUkill
1分钟
一.3.2MySQL数据库由于误操作,需要恢复数据
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
获取前一天的
备份数据并解压
ls-ltr/backup/databak/mysqlbak
unzip备份文件名
1分钟
2
用前一天的备份
数据进行恢复
mysq-uroot-pmysql778MJU<解压后的备份文件名
1分钟
3
获取备份文件中
日志的位置
grepCHANGE备份文件名
假设结果如下
--CHANGEMASTERTOMASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=106;
1分钟
4
根据上一步的日志位置进行日志恢复
mysqlbinlog--start-position=106mysql-bin.000002|mysql-uroot-pmysql778MJU
视日志量而定
5
继续恢复其它日志,
mysqlbinlogmysql-bin.000003|mysql-uroot-pmysql778MJU
(由于该日志是完全恢复,所以不用加恢复位置)
视日志量而定
6
继续恢复其它日志,直到误操作的时间点
Mysqlbinlog--stop-date=”2017-04-0510:
14:
00”mysql-bin.000004|mysql-uroot-pmysql778MJU
视日志量而定
一.3.3MySQL服务在一台主机上无法启动
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
把Mysql服务
切换到备机
clusvcadm-rmysqlserv-mzxdmysql2
1分钟
一.3.4MySQL服务在两台集群主机上均无法启动成功,把MySQL切换到备库
序号
恢复步骤(包括备份步骤和验证步骤)
相关命令
预计使用时间
执行岗位
备注
1
检查从库的复制状态
Showslavestatus\G;
查看Last_IO_Error
和Last_SQL_Error是否有报错
1分钟
2
停止从库复制
如果上一步没有报错,则停止复制
Stopslave;
1分钟
3
如果上一步有报错
请联系集成商工程师进行修复
20分钟
4
把应用服务器连接到mysql从库
修改mysql连接地址为
**:
3306
1分钟
第二章主机故障
二.1方案概述
导致服务器出现故障的问题是一个庞大的集合,可以分成很多种导致服务器出现故障的原因,根据服务器故障出现的状况进行分类,确定故障属于哪一个类别,根据相应的处理流程对故障做对应的处理。
二.2故障分类
大致可以分为以下3类:
序列
问题种类
详细内容
一
服务器硬件故障
1、服务器电源故障;
2、服务器硬盘故障;
3、CPU故障;
4、内存故障;
5、主板故障;
6、PCI卡故障
二
服务器系统故障
1、文件系统利用率过高导致系统无法运行;
2、硬盘损坏导致系统崩溃;
3、文件或目录权限导致无法正常使用
4、硬盘无可用空间,导致系统异常
三
服务器硬件超负荷
1、数据超过硬盘读写负载能力导致应用程序崩溃;
2、CPU使用率过高导致服务器宕机;
3、硬盘空间使用满导致宕机;
4、I/O过高,服务器带宽不足,导致卡顿
二.3故障应急处理流程
若是服务器硬件故障,则可以联系厂商进行报修。
若是服务器系统问题,则联系集成商工程师进行处理。
若是服务器硬件超负荷,则需配置更高配置的服务器,或增加服务器进行负载。
二.4故障排错流程
主机方面的问题,根据报警邮件即可了解大致是硬件故障或是系统层面故障。
本项目中既有物理机又有虚拟机,所以遇到报警信息时需要先判断报警信息的服务器是虚拟机还是物理机,这里根据ip地址结合部署规划手册即可判断。
本项目中无论是虚拟机还是物理机都有备机的存在,一台物理机故障不会造成无法对外服务的状况。
需要机房管理人员配合定期进入机房检查物理设备是否有故障灯亮起,以更全面化的保障服务器的正常对外服务。
二.4.1物理机故障排错流程
若物理机无法远程登录,且其它设备网络均正常,则初步可排除网络原因。
此时可进入机房查看物理机的物理状态,若该物理机已宕机或有故障灯亮起,则可查看故障灯信息并找厂商报修。
若无故障灯亮起且服务器为开机状态,但无法登录系统,可尝试重启服务器,并联系集成商工程师处理。
二.4.2虚拟机故障排错流程
若因虚拟机故障而导致系统无法正常对外服务,可通过esxiClient登录vcenter查看该虚拟机的状态及资源使用情况,也可通过vcenter去打开虚拟机窗口进行查看,若vcenter无法连接,可通过esxiClient直接登录esxi主机即可查看,通过查看事件来分析虚拟机故障原因,步骤如下:
(以下只作为步骤演示)
二.4.3通过查看事件及日志分析虚拟机故障原因:
二.4.4进入系统分析虚拟机故障原因:
二.4.5系统能够正常访问,但文件系统利用率过高
以下只作为演示:
首先查看文件系统利用率,使用命令”df-PTh”查看:
若某个文件系统利用率过高,可为该文件系统扩容:
扩容前需检查文件系统所在vg是否有足够空间,这里以/usr挂载点的文件系统为例,将其扩容至15G。
首先可以知道挂载点为/usr的文件系统在rootvg中,查看rootvg中是否还有剩余空间:
先为lv扩容文件,再resize文件系统:
命令如下:
lvextend-L+5G/dev/mapper/rootvg-usrlv
resize2fs/dev/mapper/rootvg-usrlv
可以看到文件系统已扩容至15G。
二.4.6Linux系统中服务无法启动
可查看/var/log/messages文件查找错误原因。
若该服务有自己的日志文件,可通过查找该日志文件查看原因。
比如nginx服务,若无法启动nginx服务,可通过查看/var/log/nginx/error.log文件查看具体报错原因,以解决问题:
[root@rhel6nginx]#cat/var/log/nginx/error.log
2017/04/0410:
56:
47[emerg]3748#3748:
open()"/var1/run/nginx.pid"failed(2:
Nosuchfileordirectory)
[root@rhel6nginx]#
通过cat/var/log/nginx/error.log或tail–f/var/log/nginx/error.log均可以。
二.4.7系统中swap使用率过高
此时swap使用率已高,最好不要停止swap设备,再添加一个swap设备即可:
[root@rhel6~]#free
totalusedfreesharedbufferscached
Mem:
39087246575043251220405232108236916
-/+buffers/cache:
3884803520244
Swap:
10485756904056010485756
[root@rhel6