达梦数据库联机备份与还原

本文详细介绍了DM数据库的联机备份操作,包括设置备份策略、完全备份、增量备份、归档备份的步骤和语法。还讨论了如何进行备份压缩、并行备份以及如何验证备份的完整性和正确性。同时,提到了数据库和归档日志的还原需通过DMRMAN工具执行。
摘要由CSDN通过智能技术生成

一、概述

联机备份之前,请设置 INI 参数 BAK_POLICY,选用合适的备份策略

SQL>BACKUP DATABASE BACKUPSET 'db_bak_01';

语句执行完后会在默认的备份路径下生成名为“db_bak_01”的备份集目录,默认的备
份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置,则使用 SYSTEM_PATH 下的 bak
目录。

语法如下: BACKUP DATABASE [[[FULL] [DDL_CLONE]]| INCREMENT [CUMULATIVE][WITH BACKUPDIR '< 基备份搜索目录>'{,''} |[BASE ON ']][TO ]BACKUPSET [''] [DEVICE TYPE [PARMS '']] [BACKUPINFO ''] [MAXPIECESIZE ] [IDENTIFIED BY [WITH ENCRYPTION][ENCRYPT WITH ]] [COMPRESSED [LEVEL ]] [WITHOUT LOG] [TRACE FILE '< TRACE 文件名>'] [TRACE LEVEL < TRACE 日志级别>] [TASK THREAD ][PARALLEL [] [READ SIZE ]];

  • 设置联机数据库备份集路径

SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_01';

  • 设置备份名

       系统为每个备份指定一个备份名,它可作为识别备份的一种方式。备份时用户可以采用 系统生成的备份名也可以指定属于自己的备份名。

       备份名可以有效地表示备份的目的或者不同类型备份的用途。比如对于一个用于还原的 数据库完全备份可设置备份名为“db_full_for_restore”。

        如果不显式地指定备份名,系统会默认为备份创建一个备份名。备份名的格式为:DB_ 备份类型_数据库名_备份时间,DB 表示备份为数据库备份,备份类型表示该备份为完全备 份还是增量备份,数据库名为当前连接数据库的名称,备份时间为开始执行备份的系统时间。

        若一次备份产生多个备份片,那么每个备份片的备份名是相同的。

        指定的备份名不能与默认备份路径中已有的备份名相同,但可以与非默认备份路径中已 有的备份名相同。备份路径指备份集名称的上一层路径,如例 3.1 中的备份路径为 “/home/dm_bak”。         备份名最大长度为 128 个字节,如果超长服务器会报语法分析出错。备份名的设置不 可以使用特殊的格式,如%NAME。

        例 : 创建备份集,备份名设置为“WEEKLY_FULL_BAK”。

SQL>BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/home/dm_bak/db_bak_3_02';

  • 增量备份指定基备份目录

BACKUPDIR

  • 备份压缩

所有的备份语句都可以设置压缩选项,指定 COMPRESSED 参数后备份集会先被压缩然 后再写到磁盘或磁带。压缩选项有不同的压缩级别可以选择,取值范围为 0~9。0 表示不压 缩,1 表示 1 级压缩,9 表示 9 级压缩。压缩级别越高,压缩越慢,但压缩比越高。若仅指 定 COMPRESSED,压缩级别为 1。实际应用中用户可根据存储空间、数据文件大小、备份 效率等确定合适的压缩级别。

例  执行备份压缩,压缩级别设置为 5。

SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_06' COMPRESSED LEVEL 5;

  • 并行备份

DM 支持对库级和表空间级的并行备份,待备份数据文件很大时使用并行备份可以显著 提高备份效率。用户可通过关键字 PARALLEL 指定是否执行并行备份,以及执行并行备份的并行数。执行备份时实际使用的并行数由用户指定的并行数和实际可使用的最大并行数决 定,而实际可使用的最大并行数由数据文件的个数决定。

SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_07' PARALLEL 8;

二、完全备份和增量备份

完全备份和增量备份是数据库备份的最常用策略

  • 完全备份

        执行数据库备份,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行 数据库备份。

        数据库完全备份中包含了指定库的全部有效数据页,为了保证数据安全应该对数据库定 期执行完全备份。多久执行一次完全备份才合适,一般规则是数据库经过频繁修改后最好执 行一次完全备份。

        完全备份数据库步骤如下:

         1) 配置归档

        配置归档过程
        disql sysdba/Dbadba12345
        SQL> ALTER DATABASE MOUNT;
        SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST = G:\dmdbms\arch, TYPE = local,         FILE_SIZE = 1024, SPACE_LIMIT = 204800';
        SQL>ALTER DATABASE ARCHIVELOG;
        SQL>ALTER DATABASE OPEN;

        select name,arch_mode from v$database;   --查看是否配置归档
        select arch_name,arch_type,arch_dest,arch_file_size,arch_space_limit from v$dm_arch_ini;          --查看是否归档,及归档的空间,路径

        select instance_name,status$,host_name from v$instance;   --查看实例名,状态,主机名

         2) 保证数据库处于 OPEN 状态。

         3) DIsql 中输入备份数据库语句,最简单的不设置其他参数的完全备份语句如下:         SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_full_bak_01';

        备份语句中的参数 FULL 参数可以省略,不指定备份类型服务器会默认指定备份类型为完全            备份

增量备份

        增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份 自该备份以来所有发生修改了的数据页。执行增量备份的主要目的是快速备份数据库中的修 改,减少备份时间和避免重复的备份。

        如何制定备份策略要根据可接受的最小恢复时间。例如,每周执行一次完全备份,每天 执行一次增量备份,那么恢复时要重做的归档就不会超过一天。

        增量备份数据库步骤如下:

        1) 配置归档,参考 3.1 节。

        2) 保证数据库处于 OPEN 状态。

        3) DIsql 中输入备份数据库语句,最简单的不设置其他参数的增量备份语句如下:   SQL>BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak'   BACKUPSET         '/home/dm_bak/db_increment_bak_02';

备份语句中的 INCREMENT 参数不可省略,该参数用来指定执行的备份类型为增量备份。 若要创建累积增量备份,还需要指定 CUMULATIVE 参数,否则缺省为差异增量备份。WITH BACKUPDIR 参数用来指定基备份集的搜索目录,如果基备份集不在默认目录该参数不可省略。

三、归档备份

        在 DIsql 工具中使用 BACKUP 语句可以备份归档日志。使用归档备份的前提:一是, 归档文件的 db_magic 值和库的 db_magic 值必须一样;二是,服务器必须配置归档;三 是,归档日志必须连续,如果出现不连续的情况,前面的会忽略,仅备份最新的连续部分。 如果未收集到指定范围内的归档,则不会备份。联机备份的时候经常会切换归档文件,最后 一个归档总是空的,所以最后一个归档不会被备份。

        SQL>BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01'; 备份集“arch_bak_01”会生成到默认的备份路径下。如要设置其他备份选项需参考下文 的备份归档语法。 

        BACKUP [ALL | [FROM LSN ]| [UNTIL LSN ]|[LSN BETWEEN AND ] | [FROM TIME '']|[UNTIL TIME '']|[TIME BETWEEN''> AND '' ]][][DELETE INPUT] [TO ] BACKUPSET [''][DEVICE TYPE [PARMS '']] [BACKUPINFO ''] [MAXPIECESIZE ] [IDENTIFIED BY [WITH ENCRYPTION][ENCRYPT WITH ]] [COMPRESSED [LEVEL ]] [WITHOUT LOG] [TRACE FILE ''] [TRACE LEVEL ] [TASK THREAD ][PARALLEL []];

        归档备份拷贝指定归档目录下的所有的归档文件到备份集中,并记录各个归档文件的属 性,文件大小,LSN 区间等。归档备份不存在增量备份之说。当需要保存库的归档时,可以 使用归档备份。

         完整的备份归档步骤如下:

        1) 配置归档

        2) 数据库处于 OPEN 或者 MOUNT 状态。

        3) DIsql 中输入备份数据库语句。

例如,备份归档日志,通过 LSN BETWEEN ... AND ...来指定起始和截至 LSN。 首先,确定 LSN 范围。 SQL>select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;

查询结果为

 其次,备份归档

SQL>BACKUP ARCHIVELOG LSN BETWEEN 50414 AND 50478 BACKUPSET '/home/dm_bak/arch_bak_time_14-78';

四、还原

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

五、示例

1) 联机备份数据库,保证数据库运行在归档模式及 OPEN 状态。

BACKUP DATABASE BACKUPSET 'G:\dmdbms\bak\db_full_bak_for_restore';

2) 准备目标库。还原目标库可以是已经存在的数据库,也可使用dminit 工具初始化一个新库。如下所示:

./dminit path=G:\dmdbms\data\DAMENG_FOR_RESTORE       db_name=DAMENG_FOR_RESTORE

如果还原目标库与故障库是同一个,建议先执行故障库的归档修复操作

3) 校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此 处使用脱机校验。

-- 脱机校验如下

RMAN>CHECK BACKUPSET 'G:\dmdbms\bak\db_full_bak_for_restore'; 

--联机校验如下

SELECT SF_BAKSET_CHECK('DISK','G:\dmdbms\bak\db_full_bak_for_restore');

4) 还原数据库。启动 DMRMAN,输入以下命令:
RMAN>RESTORE DATABASE 'G:\dmdbms\data\DAMENG_FOR_RESTORE\DAMENG_FOR_RESTORE\dm.ini' FROM BACKUPSET 'G:\dmdbms\bak\db_full_bak_for_restore';

未完待续。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值