备份与还原是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/

达梦数据库之备份与还原相关推荐

  1. 手把手教你达梦数据库:备份与还原详细步骤

    达梦数据库备份与还原的基本原理: DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页.而在备份的过程中,如果数据库系统还在继续运 ...

  2. 达梦数据库的备份、还原和恢复

    一.备份.还原和恢复的意义 备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态.还原与恢复的主要目的是将目标数据库恢复到备份结束时刻的状态. 二.备份 ...

  3. 达梦数据库dmrman备份与还原(一)

    1 备份还原简介         DM 数据库中的数据存储在数据库的物理数据文件中,数据文件按照页.簇和段的方式 进行管理,数据页是最小的数据存储单元.任何一个对 DM 数据库的操作,归根结底都是对 ...

  4. window 下 达梦数据库的备份和还原

    DM 提供的各种工具进行备份还原与恢复的操作,包括 DIsql工具.DMRMAN 工具.图形化客户端管理工具 MANAGER 和 CONSOLE. DIsql 工具用于执 行联机的数据备份与数据还原, ...

  5. 达梦数据库全量数据恢复还原流程

    达梦数据库全量数据恢复还原流程 1.环境描述 2.备份数据准备 3.流程 1.环境描述 服务器系统:CentOS Linux 7.6 达梦数据库:DM V8.1 远程工具:CRT 2.备份数据准备 还 ...

  6. 达梦数据库之备份还原

    如大家所知,网络安全越来越被重视,而在数据库方面我们不仅要在部署的时候做好相应的配置,还需要有一套容灾机制,即备份还原.下面我就分享一下在学习达梦数据库中关于备份还原的一些经验. 一.概念: 备份:数 ...

  7. 达梦数据库物理备份恢复_表空间级备份还原

    参考文档<DM8备份恢复手册> 1.表空间级备份还原 联机备份,脱机还原 表空间备份还原的先决条件以及限制条件参考<DM8备份恢复手册>. 1.1 备份 BACKUP V1.0 ...

  8. 达梦数据库自动备份,DM8设置自动备份,达梦数据库,自动备份。详细步骤。常用命令,启动关闭数据库,查看DMAP状态

    常用命令 DmServiceDAMENG.service改成自己bin目录下文件名 运维常见问题,官方文档 注意事项 登录客户端工具,一定要使用SYSDBA用户进行下面的客户端操作 登录数据库主机,一 ...

  9. 达梦数据库,备份目录冲突

    问题描述 达梦数据库执行全库备份,BACKUP DATABASE FULL BACKUPSET '/data_share/data_back'; 提示备份目录冲突 解决办法 指定的目录必须为一个空目录 ...

最新文章

  1. linux系统硬盘表识
  2. GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了
  3. 有参组装新转录本cufflinks_转录本组装软件StringTie的使用说明
  4. Filter_细节_执行流程生命周期
  5. 确保客户端可以接收到服务端的异常serviceDebug includeExceptionDetailInFaults=true
  6. aspnet登录界面代码_SAP系统基础操作培训1-环境登录介绍
  7. 深入浅出设计模式---3、代理模式和工厂模式
  8. 主成分分析(PCA)与线性判别分析(LDA)的区别与联系
  9. Oracle中joint,Nape中的LineJoint-线段关节
  10. 顶尖文案app_17个文案网站 5款短视频软件,自媒体人必备,直接拿走不谢
  11. Git 无法切换分支,报错git did not exit cleanly
  12. matlab中的plot函数
  13. 一个exe文件怎么运行起来的
  14. Android压缩图片并且保存到本地内存卡中
  15. 移动软件开发定制那些事
  16. java语言程序设计第二版课后答案吴倩_java语言程序设计课后答案
  17. Sharepoint 2013 页面置顶(Topbar)小插件
  18. Java实现设计模式之——单例模式
  19. 有源带通滤波器快速实现
  20. 【测试】软件测试的划分

热门文章

  1. php石头剪刀布源码,剪刀石头布微信小程序配套源码
  2. JPG、GIF、BMP和PNG格式分别是什么意思?
  3. 黄药师写给他老婆的祭文
  4. echarts+vue实现中国地图
  5. 读《软件测试》(美)Ron Patton笔记之一(2) 软件开发过程
  6. 试玩Flutter:写了个无聊的App(附Flutter感受)
  7. maven-shade-plugin错误 Cannot find 'resource' in class
  8. 一个终生受益的测试题
  9. Android 音频设备管理
  10. 模型训练前后显卡占用对比、多卡训练GPU占用分析【一文读懂】