由于误操作产生了数据丢失的问题,需要根据备份进行回档查找相关数据。

此操作需要在测试环境进行操作,需要注意,如果测试环境的达梦数据库内有其他项目数据,不要直接使用回档。

由于使用dmrman备份的数据对整个数据库备份,会将测试环境数据库变成完全和生产一致的数据库

所以一定要注意,最好是空库或者新创建一个达梦服务进行回档数据读取。

达梦备份

cd $DM_HOME/bin
# linux
./dmrman CTLSTMT="backup database '/data/DAMENG/dm.ini' full backupset '/obs_bak/DB_DAMENG_FULL_2024_05_14_11_40_12'";
# windows 没有linux服务器的情况下可以使用本地的dm进行测试
dmrman.exe  CTLSTMT="backup database 'D:\dmdbms\data\DAMENG\dm.ini' FROM BACKUPSET  'C:\fsdownload\DB_DAMENG_FULL_2025_07_22_11_00_07\'";

达梦备份还有两种形式,一种是通过界面设置定时备份,还有一种手动对指定模式进行导出数据备份存储。

另外两种模式备份出来的数据较大,但是可以指定对应模式,导入其他数据库不会影响其他模式。

如果有需要也可以通过界面进行手动备份。

根据数据回档

这里由于我只使用了全量备份以及回档,其余的情况可以参考下面的参考链接。

需要先停止当前达梦数据库的运行

cd $DM_HOME/bin
# linux
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/DB_DAMENG_FULL_2023_09_23_01_00_38/'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/DB_DAMENG_FULL_2023_09_23_01_00_38/'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"

# windows
# 还原数据文件
dmrman.exe  CTLSTMT="RESTORE DATABASE 'D:\dmdbms\data\DAMENG\dm.ini' FROM BACKUPSET 'C:fsdownload\DB_DAMENG_FULL_2025_07_22_11_00_07\'"
# 还原应用日志(事务恢复
dmrman.exe  CTLSTMT="RECOVER DATABASE 'D:\dmdbms\data\DAMENG\dm.ini' FROM BACKUPSET 'C:fsdownload\DB_DAMENG_FULL_2025_07_22_11_00_07\'"
# 更新数据库标识(必须要执行的
dmrman.exe  CTLSTMT="RECOVER DATABASE 'D:\dmdbms\data\DAMENG\dm.ini' UPDATE DB_MAGIC"

在数据恢复后,启动数据库,数据库可能处于mount的状态,可以通过参考连接中的方式进行恢复。

参考链接