达梦数据库之备份与还原

article/2025/11/1 16:11:16

        备份与还原是DBA必备的技能之一,为防止数据的误操作、误删除等突发情况,所以备份还原至关重要,一下从几方面共同学习一下达梦数据库的备份与还原基础知识。

一、概述

        达梦数据库的备份还原方式:物理备份还原和逻辑备份还原
物理备份:
冷备:(dmap服务打开的状态下,数据库是关闭的)
热备:(dmap服务必定是打开的,数据库是打开的,数据库要开归档)
物理备份还原是对数据库的操做系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。

逻辑备份:
导出:dexp / 导入:dimp

  • 逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
  • 数据库级(FULL):导出或导入整个数据库中的全部对象。
  • 用户级(OWNER):导出或导入一个或多个用户所拥有的全部对象。模式级(SCHEMAS):导出或导入一个或多个模式下的全部对象。
  • 表级(TABLE):导出或导入一个或多个指定的表或表分区。

与备份类似,还原分为逻辑还原和物理还原:

 联机还原和脱机还原

        联机还原指数据库处于运行状态时,通过SQL语句执行还原操作。表还原可以在联机状态下执行。        

        脱机还原指数据库处于关闭状态时执行的还原操作,脱机还原通过DMRMAN工具进行。库备份、表空间备份和归档备份,可以执行脱机还原。(脱机还原操作的目标库必须处于关闭状态。)

数据还原和归档日志还原

        数据还原可以分为库还原、表空间还原和表还原。库还原和表空间必须脱机执行;表还原操作只能联机执行。表还原从表备份集读取数据,重新恢复目标表数据,还会在目标表上重建索引、约束。归档日志还原则将归档日志备份集中的归档日志内容,重新生成到指定目录中。

完全还原和增量还原

        完全还原是指直接利用完全备份集进行数据还原操作。增量还原指通过增量备份集进行数据还原操作。但是考虑到增量备份集的基础一定是一个完全备份集,因此增量还原过程中隐含了一个完全还原操作。如果增量备份集的基备份集被删除了,那么单独使用这个增量备份集是无法进行还原操作的。

二、备份服务进程

        备份还原实现策略有两种:dmap辅助进程方式和无辅助进程方式。

  • DMAP辅助进程方式,可支持第三方备份(指定DEVICE TYPE为TAPE)。DMAP插件执行,改造了备份还原任务子系统,允许指定并行度,大幅提升了备份还原的效率,特别是加密、压缩的处理效率。如果选择使用DMAP辅助进程,执行备份还原之前就必须启动DMAP服务。安装DM数据库以后,DMAP服务会自动启动。如果需要手动启动,有两种途径,一是启动DM服务查看器中的DmAPService。二是通过手动启动DMAP执行码实现,DMAP执行码位于DM安装目录的bin子目录下。除此之外,LINUX下,还可以调用bin目录下的DmAPService脚本。
  • 无辅助进程方式,不依赖DMAP,由主进程dmserver自身执行备份还原,但不支持第三方备份(指定DEVICE TYPE为TAPE)。

三、物理归备份档参数配置

1、归档配置

        通过 dm.ini 和 dmarch.ini 可以配置本地归档。dmarch.ini 生效的前提是 dm.ini 中的参数 ARCH_INI 置为 1。dmarch.ini 可以进行本地归档和远程归档的设置,DM 备份与还原过程中使用的日志均为本地归档日志。

2、手工SQL配置

       ①、修改数据库为 Mount 状态

        SQL>alter DATABASE MOUNT;

        ②、配置本地归档

        SQL>ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/dmdata/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';

       ③、开启归档模式

        SQL>ALTER DATABASE ARCHIVELOG;

        ④、修改数据库为 Open 状态

        SQL>ALTER DATABASE OPEN;

        ⑤、查看开启状态

        SQL>select name,status$,ARCH_MODE from v$database;

四、备份

1、备份整个库
    SQL> BACKUP DATABASE FULL BACKUPSET '/opt/dmdbms/BAK/db_full_bak_01';
2、指定备份集路径为 /home/dm_bak/db_bak_3_01,执行以下命令:
    SQL> BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_01';
3、创建备份集,备份名设置为 WEEKLY_FULL_BAK,执行以下命令:
    SQL> BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/home/dm_bak/db_bak_3_02';
4、创建备份为备份集添加描述信息为完全备份,执行以下命令:
    SQL> BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_04' BACKUPINFO '完全备份';
5、创建备份限制备份片大小为 300 MB,执行以下命令:
    SQL> BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_05' MAXPIECESIZE 300;
6、执行备份压缩,压缩级别设置为 5,执行以下命令:
    SQL> BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_06' COMPRESSED LEVEL 5;
7、创建并行备份,指定并行数为 8,执行以下命令:
    SQL> BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_07' PARALLEL 8;
8、基于 /home/dm_bak 全量备份的增量备份,执行以下命令:
    SQL> BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';
注意
当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
系统处于归档模式下时,才允许进行表空间备份。
Mount 状态下,不允许进行表空间备份。
MPP 环境不允许进行表空间备份。

  1. 当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
  2. 系统处于归档模式下时,才允许进行表空间备份。
  3. Mount 状态下,不允许进行表空间备份。
  4. MPP 环境不允许进行表空间备份。

9、完全备份单个表空间,执行以下命令:
    SQL> BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';
10、增量备份指定备份目录,以备份 MAIN 表空间为例,指定 BASE_ON 参数执行增量备份,执行以下命令:
    SQL> BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak'BACKUPSET '/home/dm_bak/ts_increment_bak_02';
注意:

  • 若要创建累积增量备份,还需要指定 CUMULATIVE 参数,否则缺省为差异增量备份。
  • 若基备份不在默认备份目录,WITH BACKUPDIR 参数必须指定,用于搜索基备份集。

11、以备份 test表为例,执行以下命令:
    SQL> BACKUP TABLE TEST BACKUPSET '/home/dm_bak/tab_bak_01';
12、添加备份目录。若添加目录已经存在或者为库默认备份路径,则认为已经存在,不添加,但也不报错。执行以下命令:
    SQL> INT SF_BAKSET_BACKUP_DIR_ADD(device_type varchar,backup_dir varchar(256));
13、删除备份目录。若删除目录为库默认备份路径,不进行删除,认为删除失败。若指定目录存在于记录的合法目录中,则删除;不存在或者为空则跳过,正常返回。执行以下命令:
    SQL>INT SF_BAKSET_BACKUP_DIR_REMOVE (device_type varchar,backup_dir varchar(256));
14、清理全部备份目录,默认备份目录除外,执行以下命令:
    SQL>INT SF_BAKSET_BACKUP_DIR_REMOVE_ALL ();

脱机备份rman:
15、全库备份,在 DMRMAN 下执行以下命令:
    dramn> BACKUP  DATABASE  '/opt/dmdbms/data/DAMENG/dm.ini'  FULL  BACKUPSET '/home/dm_bak/db_full_bak_01';
16、增量备份,在 DMRMAN 下执行以下命令:
    dramn> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';

注意:

  • 增量备份指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错。
  • WITH BACKUPDIR 参数用于搜索基备份集。
  • INCREMENT 参数表示执行的备份为增量备份,增量备份该参数不可省略。

17、校验特定的备份集,在 DMRMAN 下执行以下命令:
BACKUP  DATABASE  '/opt/dmdbms/data/DAMENG/dm.ini'  FULL  BACKUPSET '/home/dm_bak/db_full_bak_01';
CHECK BACKUPSET '/home/dm_bak/db_full_bak_01';
18、删除特定备份集,每次只能删除一个备份集,在 DMRMAN 下执行以下命令:
    BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/db_bak_for_remove_01';
    REMOVE BACKUPSET '/home/dm_bak/db_bak_for_remove_01';
19、备份集在数据库默认备份目录,默认目录在 dm.ini 参数 BAK_PATH,执行以下命令:
    BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET'db_bak_for_remove_01';
    REMOVE BACKUPSET 'db_bak_for_remove_01' DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
20、备份集为其他备份集的基备份且备份集都在数据库默认备份目录下,执行以下命令:
    BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET'db_bak_for_remove_01';
    BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT  BACKUPSET'db_bak_for_remove_01_incr';
    REMOVE BACKUPSET 'db_bak_for_remove_01_incr' DATABASE'/opt/dmdbms/data/DAMENG/dm.ini' CASCADE;
21、批量删除所有备份,执行以下命令:
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'BACKUPSET'/home/dm_bak/db_bak_for_remove_02';
    REMOVE BACKUPSETS WITH BACKUPDIR '/home/dm_bak';

逻辑备份:

1、FULL 方式导出数据库的所有对象。
        dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=YDIRECTORY=/mnt/data/dexp
2、OWNER 方式导出一个或多个用户拥有的所有对象。
        dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dexp
3、SCHEMAS 方式的导出一个或多个模式下的所有对象。
        dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01DIRECTORY=/mnt/data/dexp
4、TABLES 方式导出和导入一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息。和 TABLES 导出有关的参数还有 QUERY、EXCLUDE 和 INCLUDE,都是用来设置过滤条件的。
        dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp

五、还原

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

逻辑还原
1、还原表结构,执行以下命令:
    SQL>restore table struct from backupset '/home/dm_bak/tab_bak_for_res_01';
2、还原表数据,执行以下命令:
    SQL>RESTORE TABLE  FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
3、还原表数据,但不重建索引,执行以下命令:
    SQL>RESTORE  TABLE    WITHOUT  INDEX  FROM  BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
4、还原表数据,但不还原约束,执行以下命令:
    SQL>RESTORE  WITHOUT  CONSTRAINT  FROM  BACKUPSET '/home/dm_bak/tab_bak_for_res_01';

脱机还原rman

        进入数据库安装目录的 bin 目录下,例如 Linux 下的目录为 /opt/dmdbms/bin,执行以下命令:./dmrman
1、联机备份数据库,保证数据库运行在归档模式及 Open 状态。执行以下命令:
    BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
2、准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始2、化一个新库。执行以下命令:
    ./dminit path=/opt/dmdbms/data db_name=DAMENG_FOR_RESTORE
3、启动 RMAN,校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验。执行以下命令:
    CHECK BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
4、还原数据库。启动 DMRMAN,执行以下命令:
RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
5、恢复数据库。启动 DMRMAN,执行以下命令:
RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';
6、恢复 db_magic,执行以下命令:
    RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;
注意:
        可通过调整 dm.ini 中的和检查点和 REDO 日志相关参数,降低检查点频率,增大 REDO 日志包大小来提升还原性能。

表空间还原

        使用 RESTORE 命令完成表空间的脱机还原,还原的备份集可以是联机或脱机生成的库备份集,也可以是联机生成的表空间备份集。脱机表空间还原仅涉及表空间数据文件的重建与数据页的拷贝。不需要事先置目标表空间为 OFFLINE 状态。表空间还原后,表空间状态被置为 RES_OFFLINE,并设置数据标记 FIL_TS_RECV_STATE_RESTORED,表示经过还原但数据不完整。
1、创建表空间,执行以下命令:
    CREATE TABLESPACE TS1 DATAFILE 'TS1.DBF' SIZE 128;
2、创建表,指定表的存储空间为 TS1,执行以下命令:
    CREATE TABLE RCT_BFHF_BKJ (C1 INT) STORAGE(ON TS1);
    INSERT INTO RCT_BFHF_BKJ VALUES(1);

    Commit;
3、联机备份数据库,保证数据库运行在归档模式及 OPEN 状态。执行以下命令:
    BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';
4、校验备份,校验待还原备份集的合法性(此步骤可选),执行以下命令:
    CHECK BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';
5、将表空间脱机,执行以下命令:
    ALTER TABLESPACE TS1 OFFLINE;
6、还原表空间。需要注意,表空间还原的目标库只能是备份集产生的源库,否则将报错。
        RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
7、恢复表空间。启动 DMRMAN,执行以下命令:
        RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE TS1;

到此文章结束,请耐心阅读~
更多达梦技术资讯,请访问达梦技术社区:
达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心
https://eco.dameng.com/

http://chatgpt.dhexx.cn/article/Pj5UnLJu.shtml

相关文章

DB2数据库的备份还原详解

备份: 一、连接数据库服务器(在服务器端建立备份文件夹) windows下(winr mstsc)输入db2cmd,linux下(我使用的是xshell) 若当前用户为root则需要切换用户至数据库管理员 db2inst1 …

数据库——数据库的备份和还原

文章目录 一、数据库的备份二、数据库的还原1. 第一种方式步骤1:在数据库服务器内部创建数据库步骤2:在cmd窗口执行 2. 第二种方式步骤1:在数据库服务器内部创建数据库步骤2:切换到该数据库,使用source命令还原 一、数…

达梦数据库的备份还原

与Oracle数据库类似,达梦数据库的备份包含物理备份和逻辑备份。 逻辑备份和物理备份各有优劣,一般来说,物理备份拷贝有效的数据页,恢复速度比较快,占用空间比较大;逻辑备份导出数据库中逻辑数据&#xff0…

达梦数据库的备份与还原

目录 一、物理备份还原 1、冷备 (1)使用DM控制台工具console备份 (2)使用dmrman工具进行备份 2、热备 (1)开启归档 (2)联机备份 3、还原恢复 (1)表联…

SQLServer数据库备份与还原

一、Microsoft SQL Server Management Studio是什么? Microsoft SQL Server Management Studio,顾名思义,是微软 SQL Server的管理工具,说白了,就是微软官方管理自家数据库的软件。可以对数据库和表操作,本…

MySQL数据库备份与还原

MySQL数据库备份与还原 一、通过Navicat设置计划1 : 备份文件存储位置2 : 新建计划3 : 测试计划 二、通过Navicat设置自动任务1 : 设置计划任务时间 三、通过Windows设置自动任务1 : 打开任务计划程序2 : 创建基本任务 四、mysql还原五、说明 一、通过Navicat设置计划 1 : 备份…

pgAdmin4数据库备份还原

1、右键数据库选择备份(backup) 2、选择backup格式,输入名字,直接点击备份,备份完成 3、恢复前先删掉所有的表,再右键选择恢复(Restore) 直接选择备份文件点击恢复,恢复…

DM数据库备份与还原

目录 一、基本概述 二、DM8备份还原的方法 2.1备份还原工具 2.2配置归档 2.3使用联机执行 SQL 语句进行备份还原 2.3.1数据库备份 2.3.2表空间备份 2.3.3表备份 2.3.4归档备份 2.3.5数据备份高级主题 2.3.6管理备份 2.3.7数据还原还原 2.4使用DMRMAN工具进行备份还…

达梦数据库备份与还原

一、基础知识 达梦的备份分为逻辑备份和物理备份。 其中物理备份分为完全备份和增量备份。完全备份是指一个备份包含指定数据库或表空间的所有数据。增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。物理备份…

ps高光抠图

原图 目标,给它换一个颜色的背景 我们只需按ctrlalt2提取高光选区,然后ctrlJ复制图层 新建一个新图层,填充其他颜色即可。

PS用套索工具抠图,并修改背景颜色

1.在工具栏找到套索工具,右键选中磁性套索工具,如图: 2.抠出自己想要的部分: 3.新建图层,添加背景色 4.添加背景色,AltDelete 5.系统操作步骤:

ps婚纱抠图

婚纱抠图 1.ctrlJ 复制图层 2.图像→计算→两个通道改为灰色→确定 3.路径→ctrl路径1→前景色调成黑色(altdelete) 4.ctrl工作路径→前背景色调成白色(altdelete) 5.选择→反向→画笔前背景色黑色→涂抹

PS教程之在线抠图的步骤,如何将一张图抠图到另一张图片

Ps是使用较多的专业修图软件,不仅功能齐全,而且操作很方便,所以不管是外出旅游拍照还是艺术照亦或者是证件照都会修图,而对于稍微专业一点的人来说都会使用到PS软件,但是直接在电脑上安装PS软件,常常会出现…

ps选择并遮住抠图

我们一般的证件照要换底,可以使用这个方法。 原图 把猫扣出来 我们先用套手工具把猫咪围一圈 右键选择并遮住 选择第二个画笔,点击加号,画笔大小调大一点 然后在猫咪周围进行涂抹, 最后勾选输出设置的净化颜色,没勾…

PS如何快速使用对象选择工具抠图?

打开Photoshop软件,Ctrl O打开要抠图的素材。 Ctrl J复制一个新的图层,保证原图不受破坏。 点击对象选择工具如下图 使用对象选择工具把图中的对象扣下来 成功抠出图中对象如下图所示 补充:如在软件左边工具栏中没有找到对象选择工具&#…

手把手教你如何用PS抠白底图教程

欢迎来到慕恬瑶平面设计,今天给大家介绍PS抠白底图教程:如何快速用ps抠图。本ps精修教程中包含PS基础的一些工具的技巧使用,请大家跟着教程仔细操作,反复练习,直到能够熟练掌握。接下来,小编就带你正式进入…

怎样抠图怎么把背景换成白色?几个步骤教你轻松掌握

有时候我们一些照片背景色比较杂乱需要想要换成纯色,或者一些证件照需要更换白色底该怎么操作呢?相信一些制作简历,或者从事电商图片制作的小伙伴可能都遇到过这种问题,但是很多在线处理的小网页也不敢上传图片怕会泄漏出去&#…

PS抠图后有毛边怎么处理?

1、打开PS,导入照片,CtrlJ复制出背景副本; 2、在工具箱中选择“魔棒工具/魔术橡皮擦”点击图片中白色区域,去除白色背景; 3、设置前景色为纯黑色,新建图层,填充前景色,发现抠图边缘出…

PS 抠图去除背景

上网找一张素材,如下图,这张图是白底的,没法叠加在其他图片上 用ps打开图片,选择 > 色彩范围 此时,鼠标自动变成吸管,此时你需要: 吸取背景颜色调整颜色容差使得下方预览图中的背景被正确…

PS图片背景透明(抠图)

适用于简单的边界明显的图片,使用版本PS2022。 1、图片准备 2、套索工具圈住要扣的对象 3、ctrlj 将套索出的对象复制为新图层 4、打开通道,选择对比对最大的通道,并右键该通道,复制出一个新通道。 5、点击此通道按下ctrlL&#…