love wife love life —Roger的Oracle/MySQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL数据恢复、性能优化、迁移升级、紧急救援等服务

达梦数据库学习笔记之 — 物理备份与恢复

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL数据恢复博客

本文链接地址: 达梦数据库学习笔记之 — 物理备份与恢复

针对达梦数据库的物理备份,可以通过disql和dmrman来进行操作,首先配置归档。

数据库归档模式必须在实例mount的情况下打开:

++++ 通过disql 进行数据库全备份

log中会有如下类似记录(实际上disql备份记录会进行log记录,dmrman备份并不会记录在后台日志中):

接下来我们进行一次增量备份:

可以看到如果要进行增量备份,必须指定基础全备,否则会报错No base backup的Error。 同样针对增量备份的信息也会在日志中进行简单记录

此外还可以进行基于表空间的备份;当然也支持增量;同时也支持加密,压缩等

除此之外还有一一点让我感觉非常有趣的地方是,还可以对表进行备份

既然这样的话,那么肯定也支持restore table了。 我们来看看备份文件长什么样。

可以看到这里实际上产生了2个备份文件。通过strings meta文件发现里面是元数据信息:

另外一个bak文件应该就是存放实际数据了。

接下来我们来验证一下表的备份恢复(通过disql来进行)

从测试来看,对于drop table的情况,是无法直接恢复的,需要先创建表空间,通过strings 备份文件即可获得表结构;对于truncate table的情况,可以直接restore恢复。从这个操作来看,更像是一个逻辑层的insert into或者类似oracle sqlldr 数据加载的恢复操作方式。

对于数据备份的restore 还原操作;disql 工具只能支持对于表的操作,不支持数据库级别/表空间级别或者schema级别

如果要进行数据库级别,tablespace等级别的还原和恢复操作,那么需要使用dmrman 工具。接下里玩一玩!

dmrman类似Oracle rman一样,可以进行一些配置,如上所示,比如目录,备份存储形式(tape,disk),包括trace等。

由于dmrman是脱机备份工具,因此数据库必须是关闭状态,否则会报错;这里我先把库停掉。

在脱机情况下才能通过dmrman进行备份,如果做全备份,数据库还必须是正常停机,如果是异常情况下,那么还需要先进行修复到一致状态才能进行备份。 这让人难以理解?

如果只能在脱机情况下进行备份,那么要这个有何用?查询了一下dm的官方文档,发现确实是这样说的:

达梦官方文档链接https://eco.dameng.com/docs/zh-cn/pm/backup-restore-combat.html

查看文档发现dmrman还支持一些show和check,repair等命令,在恢复时可以用到:

这里我创建一个测试表空间来进行备份恢复验证一下该工具的具体使用。

停掉数据库之后,我们开始用dmrman来进行恢复被删除的表空间文件:

接下来我们启动数据库验证一下恢复数据恢复结果如何。

表空间被自动online了。

最开始翻了一个文档,说是要启动dmap服务;我这里确实没启动;先启动服务。

尽管启动了dmap服务,可以看到,仍然是不行的。可以通过disql来进行全备份。但是就恢复而言,通过dmrman进行,只能脱机操作。

最后简单总结一下物理备份恢复:

1、通过参数bak_use_ap来控制是否需要通过dmap进行来进行辅助,便于进行联机热备;联机备份只能通过disql进行。

2、disql 备份支持数据库级别,表空间级别,用户级别以及 table级别;

3、disql的恢复操作,只能支持表级别;不支持全库或者表空间级别

4、dmrman备份恢复工具是脱机备份恢复工具;这跟Oracle RMAN差距较大;

5、达梦数据库仅支持表的联机还原数据库、表空间和归档日志的还原必须通过脱机工具DMRMAN执行。

如果数据库运行中,其中一个文件或者表空间有问题,需要进行备份恢复,那么达梦似乎就无法应对这情况了,只能把实例停掉。。。

Leave a Reply

You must be logged in to post a comment.