注册
达梦备份还原操作
培训园地/ 文章详情 /

达梦备份还原操作

Q 2025/11/14 110 0 0

备份还原概述

备份数据

  1. DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中。
  2. 有效数据页包括数据文件的描述页和被分配使用的数据页。
  3. 在备份的过程中,如果数据库系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日志的形式写到归档日志中。
  4. 为了保证用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。

还原与恢复

  1. 还原与恢复是备份的逆过程。
  2. 还原是将备份集中的有效数据页重新写入目标数据文件的过程。
  3. 恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定 LSN。
  4. 恢复结束以后,数据库中可能存在处于未提交状态的活动事务,这些活动事务在恢复结束后的第一次数据库系统启动时,会由 DM 数据库自动进行回滚。

重做日志

  1. 重做日志,又叫 REDO 日志,记录了所有物理页的修改,基本信息包括操作类型、实际数据等。
  2. 在系统故障重启时,通过重做 REDO 日志,可以将数据库恢复到故障时候的状态。

归档日志

  1. 归档日志是保证数据一致性和完整性的重要保障。
  2. 一旦出现介质故障如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点。
  3. 当利用归档恢复到指定时间点时,需调用 until time 字段指定备份的截止时间点,即可以实现恢复数据库到指定时间点。
  4. 系统将 REDO 日志写入联机日志文件后,根据归档的配置情况,异步地将 REDO 日志写入本地归档日志文件
    image.png

备份、还原、恢复的过程

表空间

  1. DM 数据库的表空间是一个逻辑概念,其目的主要是为了方便数据库的管理。
  2. 数据库的所有对象在逻辑上都存放在某个表空间中,而物理上都存储在所属表空间的数据文件中。
  3. 一个表空间由一个或多个数据文件组成。

备份集

  1. 备份集用来存放备份过程中产生的备份数据及备份信息。
  2. 一个备份集对应了一次完整的备份。
  3. 一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。

备份片

  1. 备份片用来存储备份数据的文件,备份片文件后缀为.bak。
  2. 备份时,目标数据文件内容或归档日志内容经过处理后,都会存放到各自的备份片文件中。
  3. 备份集中存放数据页的备份片称为数据备份片,存放 REDO 日志的备份片称为日志备份片。

元数据

  1. 元数据文件用来存放备份信息,元数据文件的后缀为.meta。
  2. 通过元数据文件,可以了解整个备份集信息。

逻辑备份

  1. 逻辑备份是指利用 dexp 导出工具,将指定对象(库级、模式级、表级)的数据导出到文件的备份方式。
  2. 逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。

物理备份

  1. 物理备份直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。
  2. 物理备份过程中,不关心数据页的具体内容是什么,也不关心数据页属于哪一张表,只是简单的根据数据库文件系统的描述,来挑选有效的数据页。

联机备份和脱机备份

  1. 数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作,我们称为联机备份。
  2. 数据库处于关闭状态时进行的备份操作,被称为脱机备份。
  3. 使用 DMRMAN 工具进行脱机备份,并且支持对异常关闭的数据库进行脱机库备份。备份异常关闭的数据库,要求配置了本地归档,如果本地归档不完整,则需要先修复本地归档,再进行备份。
  4. 联机备份则使用客户端工具连接到数据库实例后,通过执行 SQL 语句进行;也可以通过配置作业,定时完成自动备份。联机备份不影响数据库正常提供服务,是最常用的备份手段之一。

完全备份和增量备份

  1. 完全备份生成的备份集包含了指定库(或者表空间)的全部有效数据页。
  2. 增量备份是在某个特定备份集基础上,收集数据库新修改的数据页进行备份,可以有效减少备份集的空间占用、提高备份速度。

差异增量和累积增量

  1. 差异增量备份的基备份既可以是一个完全备份集,也可以是一个增量备份集。
  2. 累积增量备份的基备份只能是完全备份集,而不能是增量备份集。

逻辑还原和物理还原

  1. 逻辑还原是逻辑备份的逆过程,逻辑还原就是使用 dimp 工具,把 dexp 导出的备份数据重新导入到目标数据库。
  2. 物理还原是物理备份的逆过程,物理还原一般通过 DMRMAN 工具(或者 SQL 语句),把备份集中的数据内容(数据文件、数据页、归档文件)重新拷贝、写入目标文件。

联机还原和脱机还原

  1. 联机还原指数据库处于运行状态时,通过 SQL 语句执行还原操作。表还原可以在联机状态下执行。
  2. 脱机还原指数据库处于关闭状态时执行的还原操作,脱机还原通过 DMRMAN 工具进行。库备份、表空间备份和归档备份,可以执行脱机还原。脱机还原操作的目标库必须处于关闭状态。

脱机工具 DMRMAN

  1. DMRMAN(DM RECOVERY MANAGER)是 DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作。
  2. 该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。

备份还原实践

本文演示环境如下:

操作系统 CPU 数据库
Kylin V10 x86_64 架构 dm8_20250506_x86_rh7_64

全库 + 增量备份集还原数据库

数据准备及备份

  1. 数据准备,执行以下命令:
create table test (a int );				
insert into test values (1);
commit;

  1. 第一次全库备份。
backup database full to "DB_DAMENG_FULL_2025_09_29_09_25_43" backupset'/dmdata/dmbak/DB_DAMENG_FULL_2025_09_29_09_25_43' compressed level 1;

  1. 第二次备份为增量备份。
insert into test values(2); 
commit;  
backup database increment to "DB_DAMENG_INCRE_2025_09_29_11_39_46" backupset	'/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_11_39_46' compressed level 1;

  1. 第三次备份为增量备份。
insert into test values(3);
commit;
backup database increment to "DB_DAMENG_INCRE_2025_09_29_15_23_16" backupset'/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_15_23_16' compressed level 1;

  1. 查看备份集
ll  /dmdata/dmbak

数据还原及恢复

  1. 启动dmrman
/home/dmdba/dmdbms/bin/./dmrman

  1. 检验备份集是否正确
check backupset '/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_15_23_16';

  1. 还原
restore database '/dmdata/data/DMTEST/dm.ini' FROM BACKUPSET '/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_15_23_16';

  1. 恢复
recover database '/dmdata/data/DMTEST/dm.ini' from backupset '/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_15_23_16';  

  1. 更新数据库魔数
recover database '/dmdata/data/DMTEST/dm.ini' update DB_MAGIC;

  1. 退出dmrman

备注:不要使用 ctrl+d ,这种方式不会退出dmrman

注意:当备份集为脱机备份即备份过程中无日志生成,那么此时还原后的数据库中数据与备份时数据状态一致。在不需要重做归档日志恢复数据的情况下,可以直接更新 DB_MAGIC 完成数据库恢复操作。

  1. 还原成功后,启动数据库并开始检查数据。
systemctl start DmServiceDMTE.service
su - dmdba

全库 + 增量备份集 + 归档日志还原数据库

数据准备及备份

  1. 数据准备,执行以下命令:
create table test (a int);
insert into test values (1);
commit;

  1. 第一次全库备份。
backup database full to "DB_DAMENG_FULL_2025_09_29_14_11_23" backupset '/dmdata/dmbak/DB_DAMENG_FULL_2025_09_29_14_11_23' compressed level 1;

  1. 第二次备份为增量备份。
insert into test values(2);
commit;
backup database increment to "DB_DAMENG_INCRE_2025_09_29_15_40_46" backupset '/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_15_40_46' compressed level 1;

  1. 第三次备份为增量备份。
insert into test values(3);
commit;
backup database increment to "DB_DAMENG_INCRE_2025_09_29_17_23_20" backupset '/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_17_23_20' compressed level 1;

  1. 插入数据 4 并提交,产生新数据归档。
insert into test values(4);
commit;

  1. 插入数据 5 并提交,产生新数据归档。
insert into test values(5);
commit;

  1. 查看备份集。
ll  /dmdata/dmbak

注意:如果两个增量备份期间未产生新数据,则无法进行增量备份。
恢复到当前最新数据时刻

  1. 启动dmrman
/home/dmdba/dmdbms/bin/./dmrman

  1. 检验备份集是否正确
check backupset '/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_17_23_20';

  1. 还原
restore database '/dmdata/data/DMTEST/dm.ini' FROM BACKUPSET '/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_17_23_20';

  1. 恢复
recover database '/dmdata/data/DMTEST/dm.ini' with archivedir '/dmdata/arch';

  1. 更新数据库魔数
recover database '/dmdata/data/DMTEST/dm.ini' update DB_MAGIC;

  1. 退出dmrman

备注:不要使用 ctrl+d ,这种方式不会退出dmrman
7. 还原成功后,启动数据库,并检验数据库里最新记录值。

systemctl start DmServiceDMTE.service
su - dmdba


恢复到指定时间点

  1. 启动dmrman
/home/dmdba/dmdbms/bin/./dmrman

  1. 检验备份集是否正确
check backupset '/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_17_23_20';

  1. 还原
restore database '/dmdata/data/DMTEST/dm.ini' FROM BACKUPSET '/dmdata/dmbak/DB_DAMENG_INCRE_2025_09_29_17_23_20';

  1. 恢复
recover database '/dmdata/data/DMTEST/dm.ini' with archivedir '/dmdata/arch' until time '2025-09-29 15:20:00';

备注:'2025-09-29 15:20:00'此处时间点为手动设置的数据恢复时间点

  1. 更新数据库魔数
recover database '/dmdata/data/DMTEST/dm.ini' update DB_MAGIC;

  1. 退出dmrman

  2. 还原成功后,启动数据库,并检验数据库里最新记录值。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服