达梦数据库故障恢复
1、定义:
数据库故障指的是数据库的实例不在运行中,实例不可用,实例无法启动。造成故障的原因多种多样,包括磁盘崩溃、电源故障、软件错误,甚至人为破坏。这些情况一旦发生,就可能会丢失数据,数据库系统将无法正常运行。那么,就需要我们去排查问题,尽快做实例的恢复,使数据库能正常对外提供服务。
2、故障排查思路:
1)查看实例是否运行中的方式:
ps -ef | grep dmserver
./DmServiceDMSERVER status
./dm_services status DmServiceDMSERVER
2)保留已故障库现场
cp -r DAMENG/ DAMENG_bak
3)了解现场情况
确认故障发生大致时间;故障发生前有没有什么特别的操作,比如断电;收集前台和日志报错信息;
确认有无core文件等
4)故障定位后快速回复,检查数据一致性
支持故障恢复的技术主要是日志,日志以一种安全的方式记录数据库系统变更的历史信息,一旦系统出现故障,数据库系统可以根据日志将系统恢复至故障发生前的某个时刻。数据库系统的日志分为两种类型:一是 REDO 日志,在数据被修改后记录它的新值;另一种是UNDO 日志,在数据被修改前记录它的旧值。另外,当服务器处于归档模式时,如果数据库发生故障,通过备份文件和归档日志可以恢复到指定时间点。
5)文件被误删
控制文件被误删,通过ctl_bak找回,用最近的一个dm_xxx.ctl改名为dm.ctl重新启动
undo日志损坏,undo损坏优先选择“备份+归档”恢复,从实例日志获取故障时间;无备份归档的情况下,可以选择跳过ROLL.DBF启动数据库临时启动数据库(危险操作,可能破坏事务的原子性)。
修改dm.ini参数PSEG_RECV为0。