达梦数据库教程(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;

#归档查看是否为归档模式
select arch_mode from v$database;

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';


三、达梦数据库冷迁移

冷迁移是将数据库停止后,对整个数据库以及数据目录进行迁移的过程,只需要确保目标端的相关系统账号、目录都创建好并进行授权即可

文章评论

猜你喜欢

MySQL教程(11)物理备份工具Xtrabackup使用教程

MySQL MySQL教程(11)物理备份工具Xtrabackup使用教程

一、Xtrabackup 介绍Xtrabackup是Percona出品的一款针对MySQL的物理备份工具。物理备份通常是指直接对数据文件、日志文件、配置文件等对象直接进行复制的一种备份方法。...

MySQL教程(10)逻辑备份工具mysqldump使用教程

MySQL MySQL教程(10)逻辑备份工具mysqldump使用教程

一、MySQL逻辑备份介绍逻辑备份是指通过导出数据库中的逻辑信息(如表结构、视图、索引、存储过程、数据内容等)并保存为可读格式的过程。它将数据库数据以SQL语句或其他标准格式(如CSV、JSON)输出...

PostgreSQL教程(11)第三方物理备份工具pg_rman使用教程

PostgreSQL PostgreSQL教程(11)第三方物理备份工具pg_rman使用教程

pg_rman是一款PostgreSQL第三方物理备份工具,支持对整个数据库集群、归档日志和服务器日志进行在线备份。由于pg_rman是基于本地数据拷贝的方式,而不是流式备份,所以要求 pg...

PostgreSQL教程(10)物理备份工具pg_basebackup使用教程

PostgreSQL PostgreSQL教程(10)物理备份工具pg_basebackup使用教程

一、PostgreSQL 物理备份介绍物理备份是通过复制整个数据目录来对数据库实现备份的一种高效手段,备份对象包括所有的数据文件、WAL 日志以及相关的配置文件。在 PostgreSQL 中核心物理备...

PostgreSQL教程(9)逻辑备份工具pg_dump使用教程

PostgreSQL PostgreSQL教程(9)逻辑备份工具pg_dump使用教程

一、PostgreSQL 逻辑备份介绍PostgreSQL 原生支持的逻辑备份工具为pg_dump和pgdump_all。数据库逻辑备份的原理都相同,都是将数据以SQL语句的形式输出到一个文本文件,然...