前言
在使用达梦数据库时,redo日志有时会损坏,被删除等各种问题,导致数据库异常,无法启动,本文讲解的是达梦数据库中redo日志重建方法
一、redo日志是什么?
达梦数据库REDO日志文件即重做日志文件,是数据在运行过程中正在使用的日志文件,所以又称为联机日志文件。它存储数据库的事务日志,以便系统在出现系统故障和介质故障时能够进行故障恢复。 删除REDO日志文件,则实例无法正常启动。
二、恢复redo日志方法
1.方法一:还原恢复
有备份文件和归档日志的情况下,使用“备份+归档”进行恢复,这是一种比较保险的恢复方式,可以达到完全恢复的效果,即数据能恢复到发生故障之前的那一刻。
2.方法二:替换REDO日志
没有备份和归档的情况下,可以选择替换REDO日志启动数据库,但是这种方案是不完全恢复,可能会丢失部分数据。 思路:
1、根据原故障库的信息重建一个实例
2、修改新实例redo日志的db_magic,pemnt_magic值
3、将修改redo复制回原故障库,重新启动
1、新键实例
1、查看原故障库的信息(在数据文件目录下可以看到,以dminit开头的log文件)
[dmdba@local92 DAMENG]$ more dminit20220306222659.log
start init database: V8, 2022-03-06 22:26:59
init params:
db path: /dm/dmdata/DAMENG
db name: DAMENG
auto overwrite: 0
page size: 32768
extent size: 32
time zone: +08:00
string case sensitive: 1
charset: 0
length in char: 0
page check mode: 0
page check algorithm id: 0
priv flag: 0
rlog enc flag: 0
use new hash: 1
blank pad mode: 0
sec priv mode: 0
huge with delta: 1
rlog gen for huge: 0
pseg_mgr_flag: 0
char_fix_storage: 0
sql_log_forbid: 0
secur_flag: 1
2、在新环境中初始化新实例 注意:新实例的信息一定要和原故障库一致
[dmdba@local92 DAMENG]$ dminit path=/dm db_name=DAMENG page_size=32 extent_size=32 case_sensitive=1
initdb V8
db version: 0x7000c
License will expire on 2022-09-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm/DAMENG/DAMENG01.log
log file path: /dm/DAMENG/DAMENG02.log
write to dir [/dm/DAMENG].
create dm database success. 2022-03-16 16:36:24
2、修改db_magic值和pemnt_magic值
说明:db_magic:数据库魔数 pemnt_magic:数据库永久魔数 1、查看原故障库的db_magic值和pemnt_magic值 注意:用dm自带的工具dmmdf查看,更多使用方法加help查看
[dmdba@local92 DAMENG]$ dmmdf TYPE=1 FILE=/dm/dmdata/DAMENG/SYSTEM.DBF
dmmdf V8
**********************************************************
1 db_magic=1261011608
2 next_trxid=6878674
3 pemnt_magic=1437717675
**********************************************************
Please input which parameter you want to change(1-3), q to quit:
得到 db_magic=1261011608 pemnt_magic=1437717675
2、修改新实例的db_magic值和pemnt_magic值
[dmdba@local92 DAMENG]$ dmmdf TYPE=2 FILE=/dm/DAMENG/DAMENG01.log
先修改db_magic值 再修改pemnt_magic值
3、恢复数据库
将修改后的REDO拷贝到负债库,并按照故障库的REDO日志命名,尝试启动数据库 用新的redo日志启动数据库
dmserver /dm/dmdata/DAMENG/dm.ini
数据库已经启动起来了。
总结
更多信息可前往达梦官网社区 https://eco.dameng.com/
|