注册
DM8归档日志误删修复
技术分享/ 文章详情 /

DM8归档日志误删修复

Phi Sagittarii Merak 2026/06/18 350 0 0

DM REDO日志误删恢复操作总结

通过文件句柄恢复

在误删redo日志时,如果实例没有关闭,可以使用文件句柄进行恢复:

模拟误删redo log

image.png

修改数据库状态并刷盘

这一步操作是为了让数据库只读,之后让那些记录在系统缓冲区中被修改过的数据页写入磁盘,尽可能保留更多数据
image.png

查询文件句柄并复制回原目录

ps -ef|grep dms|grep -v grep
ls -lrth /proc/10608/fd|grep dele
cp /proc/10608/fd/13 /dmdata/data/DMOA/DAMENG01.log
cp /proc/10608/fd/14 /dmdata/data/DMOA/DAMENG02.log

image.png

重新启动实例

image.png

通过备份还原恢复

当数据库有可用备份时,还可以通过备份来恢复redo log

全量备份

image.png

模拟误删redo log

image.png

备份还原数据库

# 校验备份集
check backupset '/dmdata/dmbak/dmrman_full_bak_test'
# 还原数据库
RESTORE DATABASE '/dmdata/data/DMOA/dm.ini' FROM BACKUPSET '/dmdata/dmbak/dmrman_full_bak_test'
# 恢复归档日志
RECOVER DATABASE '/dmdata/data/DMOA/dm.ini' WITH ARCHIVEDIR '/dmbak/dmdba/dmbak/arch_log/arch'"
# 更新数据库魔数
RECOVER DATABASE '/dmdata/data/DMOA/dm.ini' UPDATE DB_MAGIC

重新启动实例

image.png

通过替换REDO日志恢复

当数据库实例已经关闭,且无可用备份时,还可以通过替换redo日志方式恢复

模拟误删redo log并关闭数据库实例

image.png

按原实例初始化参数重建新实例

可以通过dminit日志查看初始化参数
image.png
image.png

修改原库PSEG_RECV参数

将原库PSEG_RECV参数设置为零
image.png

启动新初始化实例并正常关闭,拷贝redo log至原库

image.png

image.png

修改新Redo日志的db_magic、pemnt_magic的值,与故障源库一致

可以通过查看故障库的数据文件头信息,来确认这两个参数值
image.png
注意所有归档日志均需要修改,否则启动会报错
image.png

尝试启动故障实例

尝试对故障实例启动,若为2024年后的新版达梦数据库,此时仍不能启动,日志中报错如下:
image.png
新版数据库还需要修改clsn,可查询对应server运行日志最后打印的cur_lsn值,或者用归档日志分析最大lsn值。设置时比这个值稍大即可(示例中为+100)
image.png
在对current redo log进行修改时,还会出现下列错误,因为此前尝试过启动实例:
image.png
此时需要先修改实例日志的sta为1,再修改clsn。修改clsn成功后,将sta改回
image.png
image.png
修改clsn完成后,还需要在dm.ini中追加参数RLOG_CHECK_SPACE=2;
image.png
上述操作完毕后,再次重启启动实例
image.png

达梦社区技术https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服