达梦数据库教程(8)达梦数据库物理备份与还原

达梦数据库教程(8)达梦数据库物理备份与还原

一、达梦数据库物理备份介绍

物理备份是指直接对数据库底层物理文件进行复制的备份方式,比如数据文件、控制文件、日志文件等。由于物理备份不是通过SQL语句来对数据进行导出和还原,所以整体速度非常快,适合对数据量较多的数据库进行备份与恢复。

达梦物理备份工具有 DMRMAN 和 DISQL ,它们都支持全库备份、增量备份、归档日志备份等多种备份策略。DMRMAN 用于脱机备份与还原,DISQL 用于联机备份与还原。在进行联机备份时,数据库实例必须开启归档模式并处于打开状态。另外也可以通过 DM MANAGER 来进行 DISQL 的相关操作或使用 DM CONSOLE 进行 DMRAMAN 的相关操作。

二、 DMRMAN 脱机备份

脱机备份通过DMRMAN工具完成,进行脱机备份和恢复操作前都需要先停止数据库。如果实例正在运行会提示“RMAN[-137]:服务器正在运行或者存在其他进程正在操作同一个库”。在进行脱机备份时需要指定dm.ini文件用来识别实例的配置信息。

1、DMRMAN工作模式

· 交互模式

#直接运行dmrman命令进入交互模式
/data/dmdbms/bin/dmrman 
dmrman V8
RMAN>

· 非交互模式

如果要使用非交互式只需要加上CTLSTMT参数,然后接实际需要执行的备份命令

/data/dmdbms/bin/dmrman CTLSTMT="BACKUP DATABASE '/data/dmdbms/DAMENG/dm.ini' FULL BACKUPSET '/data/dmdbms/backup/'"

2、DMRMAN 备份

不管是全备、增量备份还是日志备份,在备份完成后都会在备份目录生成对应的meta文件和bak文件

· 全库备份(FULL)

/data/dmdbms/bin/dmrman CTLSTMT="BACKUP DATABASE '/data/dmdbms/DAMENG/dm.ini' FULL BACKUPSET '/data/dmdbms/backup/FULLBACKUP_20250620'"

#检查生成的文件
[dmdba@centos1 ~]$ ll /data/dmdbms/backup/FULLBACKUP_20250620/
total 44056
-rw-r--r-- 1 dmdba dmdba 46177280 Jun 17 02:49 FULLBACKUP_20250620.bak
-rw-r--r-- 1 dmdba dmdba   116224 Jun 17 02:49 FULLBACKUP_20250620.meta

dmrman1.png

· 增量备份(INCREMENT)

#使用INCREMENT WITH BACKUPDIR指向上一次完整备份,基于该完整备份进行增量备份
./bin/dmrman CTLSTMT="BACKUP DATABASE '/data/dmdbms/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/data/dmdbms/backup/FULLBACKUP_20250620' BACKUPSET '/data/dmdbms/backup/INCBACKUP_20250621'"

· 归档日志备份

#当前归档日志
ls -l 
-rw-r--r-- 1 dmdba dinstall  88K Feb 19 16:12 ARCHIVE_LOCAL1_0x5E7CF67B_EP0_2025-02-19_15-58-51.log
-rw-r--r-- 1 dmdba dinstall 120K Feb 19 16:23 ARCHIVE_LOCAL1_0x5E7CF67B_EP0_2025-02-19_16-18-10.log
-rw-r--r-- 1 dmdba dinstall  52K Feb 19 16:46 ARCHIVE_LOCAL1_0x5E7CF67B_EP0_2025-02-19_16-45-03.log

#脱机备份归档日志
/data/dmdbms/bin/dmrman CTLSTMT="BACKUP ARCHIVE LOG ALL DATABASE '/data/dmdbms/DAMENG/dm.ini' BACKUPSET '/data/dmdbms/backup/ARCH_20250621'"

3、DMRMAN 还原

· 整库还原(FULL)

整库还原有 RESTORE、RECOVER和UPDATE_MAGIC 3个步骤。

RESTORE:将备份集还原到数据目录

RECOVER:重做 REDO 日志,支持从备份集恢复或者从归档日志中恢复

UPDATE_MAGIC:更新数据库魔数,重做 REDO 日志恢复数据库后需要该操作

RMAN>RESTORE DATABASE '/data/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/data/dmdbms/backup/FULLBACKUP_20250620';
RMAN>RECOVER DATABASE '/data/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/data/dmdbms/backup/FULLBACKUP_20250620';
RMAN>RECOVER DATABASE '/data/dmdbms/DAMENG/dm.ini' UPDATE DB_MAGIC;
systemctl start DMServiceDAMENG;

· 完整备份+增量还原(INCREMENT)

如果进行过增量备份,在还原的时候只需要指定最后一次增量备份文件即可,其他步骤和全备一样

RMAN>RESTORE DATABASE '/data/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/data/dmdbms/backup/INC_BACKUP_20250620';
RMAN>RECOVER DATABASE '/data/dmdbms/DAMENG/dm.ini' FROM BACKUPSET '/data/dmdbms/backup/INC_BACKUP_20250620';
RMAN>RECOVER DATABASE '/data/dmdbms/DAMENG/dm.ini' UPDATE DB_MAGIC;

systemctl start DMServiceDAMENG;

· 完整备份+归档日志还原(ARCH)

使用归档日志还原时,RECOVER操作需要指定的是归档目录

#查看归档路径:
cat dmarch.ini |grep ARCH_DESTARCH_DEST  = /db/dm8/arch2
RMAN> RESTORE DATABASE '/data/dmdbms/DAMENG/dm.ini' FROM  BACKUPSET '/data/dmdbms/backup/FULLBACKUP_20250620';
RMAN> RECOVER DATABASE '/data/dmdbms/DAMENG/dm.ini' WITH ARCHIVEDIR '/db/dm8/arch2';
RMAN>RECOVER DATABASE '/data/dmdbms/DAMENG/dm.ini' UPDATE DB_MAGIC;

systemctl start DMServiceDAMENG;

· 完整备份+归档日志实现指定时间点还原

#完整备份
disql SYSDBA/******:5236
SQL>BACKUP DATABASE FULL BACKUPSET '/data/dmdbms/backup/FULLBAK';

#删除数据,过程略,时间点假设为20250623的10点

#还原完备
RMAN> RESTORE DATABASE '/data/dmdbms/DAMENG/dm.ini' FROM  BACKUPSET '/data/dmdbms/backup/FULLBAK';

#基于时间点恢复,数据将还原到2026-06-23 10:00:00
RMAN> RECOVER DATABASE '/data/dmdbms/DAMENG/dm.ini' WITH ARCHIVEDIR '/data/dmdbms/arch' UNTIL TIME '2026-06-23 10:00:00';

#更新魔数
RMAN> RECOVER DATABASE '/data/dmdbms/DAMENG/dm.ini' UPDATE DB_MAGIC;

#启动数据库
DmServicetest start

三、DISQL 联机备份

达梦数据库支持联机全备、增量备份、表备份、表空间备份,但是仅支持对表进行联机还原,其他对象的还原方式仍然需要通过脱机工具 DMRMAN 完成,还原过程和脱机还原一致。联机备份需要SYSDBA账号,联机备份不用指定dm.ini文件,否则反而会出现语法分析错误。联机备份的前提是要开启归档模式,通过备份文件与归档日志结合的方式,可以将数据还原到指定的时间点。虽然开启归档模式以后会对数据库性能带来少量的影响,但是换来的是数据的安全性,建议将数据库都配置为归档模式。

1、归档模式配置

· 静态配置归档

达梦数据库归档模式可以通过dmarch.ini文件进行配置,该配置文件生效的前提是 dm.ini  ARCH_INI = 1。归档文件配置示例

cat /dmdbms/data/DAMENG/dmarch.ini
[ARCHIVE_LOCAL1] 
ARCH_TYPE = LOCAL 
ARCH_DEST = /data/dm_arch
ARCH_FILE_SIZE = 1024 
ARCH_SPACE_LIMIT = 2048

dmarch.ini文件配置参数如下

dmarch1.png

· 在线配置归档

ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmdbms/arch, TYPE=LOCAL, FILE_SIZE=100, SPACE_LIMIT=5120';
ALTER DATABASE OPEN;

· 查询归档配置

通过 v$dm_arch_ini、v$arch_status 等视图可以查看归档配置信息

SELECT * FROM V$ARCH_STATUS;

2、联机备份与还原

· 全库备份

disql SYSDBA/******:5236
SQL>BACKUP DATABASE FULL BACKUPSET '/data/dmdbms/backup/full/20250622_ONLINE_FULLBAK';

· 增量备份

disql SYSDBA/******:5236
SQL > BACKUP DATABASE INCREMENT WITH BACKUPDIR '/data/dmdbms/backup/full/20250622_ONLINE_FULLBAK' BACKUPSET '/data/dmdbms/backup/full/20250622_ONLINE_INCRBAK';

· 表备份与还原

disql SYSDBA/******:5236
#表备份
SQL > BACKUP TABLE YWPIE.T1 BACKUPSET '/data/dmdbms/backup/full/20250622_ONLINE_T1_BAK';

#表还原
SQL> RESTORE TABLE YWPIE.T1 FROM BACKUPSET '/data/dmdbms/backup/full/20250622_ONLINE_T1_BAK';

· 归档日志备份

disql SYSDBA/******:5236
SQL> BACKUP ARCHIVELOG ALL BACKUPSET '/data/dmdbms/backup/full/20250622_ONLINE_ARCH_BAK';

文章评论

猜你喜欢

达梦数据库教程(12)守护集群部署与管理

国产数据库 达梦数据库教程(12)守护集群部署与管理

一、达梦数据库守护集群介绍达梦数据库通过守护集群可以实现主备模式或读写分离集群,二者在搭建过程上基本一致,区别在于:· 数据守护集群:通常使用实时归档 + ARCH WAIT APPLY=0 (高性能...

达梦数据库教程(11)达梦数据库授权与版本更新

国产数据库 达梦数据库教程(11)达梦数据库授权与版本更新

一、达梦数据库授权管理1、查询授权查询授权到期时间,如果是永久授权,EXPIRED_DATE 列值是 NULL,AUTHORIZED_CUSTOMER 是用户名称SELECT * ...

国产数据库 达梦数据库教程(9)达梦数据库定时备份配置

达梦数据库教程(9)达梦数据库定时备份配置
达梦数据库教程(9)达梦数据库定时备份配置
达梦数据库教程(9)达梦数据库定时备份配置
达梦数据库教程(9)达梦数据库定时备份配置

一、达梦数据库备份管理达梦数据库通过自带的一些函数以及动态视图可以实现定期物理备份、清理历史备份集等自动化操作,不需要再额外配置操作系统的计划任务。如果是需要自动化逻辑备份的话,则需要使用dexp结合...

达梦数据库教程(7)达梦数据库逻辑备份与还原

国产数据库 达梦数据库教程(7)达梦数据库逻辑备份与还原

一、达梦数据库逻辑备份1、逻辑备份介绍数据库逻辑备份是指将数据库中的数据和结构以逻辑形式导出的备份方式,备份的是数据的逻辑表示而不是物理文件本身。由于备份出来的文件都是SQL语句,所以非常适合跨平台迁...

达梦数据库教程(6)用户权限与模式管理

国产数据库 达梦数据库教程(6)用户权限与模式管理

一、达梦数据库用户1、达梦数据库系统用户达梦数据库在安装完成以后,通过三权分立(达梦数据库安全版则是四权分立)的特性将数据库管理员分为数据库管理员(SYSDBA)、数据库安全员(SYSSSO)、数据库...