注册
达梦数据库数据抢救经验分享
专栏/培训园地/ 文章详情 /

达梦数据库数据抢救经验分享

Content つ 2024/04/10 1257 1 0
摘要

# 达梦数据库数据抢救经验分享

故障分析:

由于服务器异常掉电,uptime观察发现最近一次启动在12天前,数据库异常关闭导致数据文件损坏,现拉起故障库后发现已存在数据文件REDO损坏,通过/opt/dmdbms/log最新日志下的dm_DMSERVER_202410.log发现WARINING和最近的数据库崩溃dm_sys_halt都是发生在访问DAMENG02.log时,故怀疑redo日志损坏,但后期过程发现存在坏块,由于异常关闭dbcheck暂时无法定位,决定保险起见进行数据库拉起并进行迁移

故障恢复:

一.先尝试修改故障库的跳过故障检查参数尝试启动,如果启动失败执行下列修复redo步骤:

cd /opt/dmdbms/data/DAMENG
vi dm.ini
修改PSEG_RECV=0,wq保存

二.修复REOD步骤:

(1)新建一个实例与故障实例参数一致,故障库dminit信息可在dm.ini同层的目录找到:

新建实例(PAGE_SIZE,EXTENT_SIZE,LOG_SIZE,CASE_SENSITIVE和CHARSET一致即可):
su - dmdba
cd /opt/dmdbms/bin
./dminit path=/data CASE_SENSITIVE=0 CHARSET=0 PORT_NUM=5238

(2)修改新库DAMENG01.log和DAMENG02.log的db_magic与故障库保持一致:
查看故障库当前的db_magic,记录下db_magic值:
su - dmdba
/opt/dmdbms/bin/dmmdf TYPE=1 FILE=/opt/dmdbms/data/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:
./dmmdf TYPE=2 FILE=/opt/dm5236/DAMENG/DAMENG01.log
输入修改选项:7
输入修改db_magic值:1261011608(故障库查询结果)
输入y保存
./dmmdf TYPE=2 FILE=/opt/data5236/DAMENG/DAMENG02.log
输入修改选项:7
输入修改db_magic值:1261011608(故障库查询结果)
输入y保存

修改新库的pemnt_magic:
./dmmdf TYPE=2 FILE=/opt/dm5236/DAMENG/DAMENG01.log
输入修改选项:12
输入修改pemnt_magic:值:1437717675(故障库查询结果)
输入y保存
./dmmdf TYPE=2 FILE=/opt/data5236/DAMENG/DAMENG02.log
输入修改选项:12
输入修改pemnt_magic:值:1437717675(故障库查询结果)
输入y保存
(3)备份下故障库DAMENG01.log和DAMENG02.log,并用新库修改后的替换
cd /data/DAMENG
cp DAMENG01.log DAMENG02.log /opt/dmdbms/data/DAMENG

(4)启动数据库服务:
cd /opt/dmdbms/bin
./DmServiceDMSERVER start

三.数据抢救:

启动成功后,需要进行数据抢救(数据存在坏块),需要重新初始化实例并进行数据迁移,先创建实例
cd /opt/dmdbms/bin
./dminit PATH=/dmdata/ PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=1024 CASE_SENSITIVE=0 CHARSET=0

按照故障库创建表空间后,进行全库导出,发现AG用户导出某表时报错,数据库异常中断(读到损坏的数据),先排除AG用户的模式重新全库导出:
create tablespace "OPERATIONDB" datafile '/dmdata/DAMENG/OPERATIONDB.DBF' size 128 autoextend on maxsize 16777215 CACHE = NORMAL;
create tablespace "DRAGDB" datafile '/dmdata/DAMENG/DRAGDB.DBF' size 128 autoextend on maxsize 16777215 CACHE = NORMAL;

先排除AG用户导出:
./dexp "SYSDBA"/"SYSDBA"@xx.24:5237 DIRECTORY=/opt FILE=imp_exp.dmp FULL=Y TABLESPACE=N DROP=N LOG=exp_2024_03_30_19_26_17.log LOG_WRITE=N EXCLUDE=SCHEMAS:AG

再导出AG用户模式下的数据,中途报错时排除错误表,重新拉起数据库服务,并继续导出:
./dexp "SYSDBA"/"SYSDBA"@xx.24:5237 DIRECTORY=/opt FILE=imp_exp_AG.dmp FULL=Y TABLESPACE=N DROP=N LOG=exp_2024_03_30_19_26_17_AG.log LOG_WRITE=N EXCLUDE=TABLES:AG.ASSESS_RESULT_NEW,AG.HOST_VALUE,AG.SOC_BAS_INTF_INFO,AG.ASSESS_RESULT_SGL_NEW

导入数据:
./dimp "SYSDBA"/"SYSDBA"@xx.24:5237 DIRECTORY=/opt FILE=imp_exp.dmp FULL=Y IGNORE=N COMPILE=Y INDEXFIRST=N TABLE_FIRST=N COMMIT_ROWS=5000 FAST_LOAD=N LOG=imp_2024_03_30_19_37_18.log LOG_WRITE=N
./dimp "SYSDBA"/"SYSDBA"@xx.24:5236 DIRECTORY=/opt FILE=imp_exp_AG.dmp IGNORE=N COMPILE=Y INDEXFIRST=N TABLE_FIRST=N COMMIT_ROWS=5000 FAST_LOAD=N LOG=imp_2024_03_30_19_54_23_AG.log LOG_WRITE=N

AG用户有四张表无法导出,需要应用重建

其他:

原故障实例路径为/opt/dmdbms/data/DAMENG/dm.ini
目前新建实例端口为5237,用户密码保持一致。实例路径为/dmdata/DAMENG/dm.ini
为新环境保留备份7天
建议:后续进行进行关闭服务器前,先将数据库服务正常关闭,显示OK即可
命令:cd /opt/dmdbms/bin
./DmServiceDMSERVER stop

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服