• 【原创】达梦数据库DM7备份与恢复


     转载请注明出处:https://www.cnblogs.com/fengaix6/p/11996588.html

    数据库备份是非常重要的工作内容。DBA不仅要保证备份成功,还要保证一旦数据库发生故障时备份可还原可恢复。

    一、概述

    DM7数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式进行管理,数据页是最小的数据存储单元。任何一个对DM7数据库的操作,归根结底都是对某个数据文件页的读写操作。

    DM7备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。

    而在备份的过程中,如果数据库系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日志的形式写到归档日志中,因此,为了保证用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。

    还原与恢复是备份的反过程。

    还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定LSN

    恢复结束以后,数据库中可能存在处于未提交状态的活动事务,这些活动事务在恢复结束后的第一次数据库系统启动时,会由DM7数据库服务器自动进行回滚。

    二、表空间

    在创建DM7数据库时,系统会自动创建5个表空间:SYSTEM表空间、ROLL表空间、MAIN表空间、TEMP表空间和HMAIN表空间。DM7自动为这几个自动创建的表空间分别生成默认的数据文件:SYSTEM.DBFROLL.DBFMAIN.DBFTEMP.DBFHMAIN表空间没有默认的数据文件。

    用户也可以创建自己的表空间,由用户创建的表空间统称为用户自定义表空间,在创建自定义表空间时需要为表空间指定数据文件。

    • SYSTEM表空间

    存放了DM7数据库全局字典信息和全局系统数据,是DM7数据库能够正常运行的必要前提,默认对应数据文件SYSTEM.DBFCREATE TABLEDDL操作会修改SYSTEM表空间数据。

    • ROLL表空间

    存放DM7数据库运行过程中产生的所有回滚记录。DM7中几乎所有的数据库修改操作都会生成回滚记录,并保存在ROLL表空间的数据文件中。ROLL表空间是数据库全局对象,不论修改哪一个表空间,生成的回滚记录都是写入ROLL表空间,该表空间由系统自动维护,默认数据文件为ROLL.DBF

    • TEMP表空间

    存放临时表数据以及数据库运行过程中产生的临时数据。在数据库运行过程中,SORTHASH JOIN等操作都可能会生成临时结果集,它们作为临时数据存放在TEMP表空间中。TEMP表空间是数据库全局对象,由系统自动维护。若数据库重启,保存在TEMP表空间中的所有数据都会丢失。TEMP表空间的默认数据文件为TEMP.DBF

    • MAIN表空间

    在创建用户时,如果没有指定默认表空间,系统自动指定MAIN表空间为用户默认的表空间。

    • HMAIN表空间

    DM7HUGE表空间,用来存放HUGE表数据文件。HMAIN表空间和HUGE表相关知识可参考《DM7系统管理员手册》。

    注:DM7的物理备份还原不支持:

    1. TEMP表空间。

    2. HUGE表空间,即数据库备份和还原不包括HMAIN和用户创建的HUGE表空间;也不支持对HMAIN和用户创建的HUGE表空间进行表空间备份和还原。DM7提供了HUGE表备份还原系统函数支持HUGE表的联机备份还原,可参考《DM7_SQL语言使用手册》

    三、达梦备份与恢复

    达梦备份包括有:逻辑备份、物理备份、联机备份、脱机备份、数据备份、归档日志备份、完全备份、增量备份等。

    • 逻辑备份

    逻辑备份是指利用dexp导出工具,将指定对象(库级、模式级、表级)的数据导出到文件的备份方式。

    • 物理备份

    物理备份则直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。

    • 联机备份

    联机备份是指数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作。

    联机备份可使用客户端工具DISQL连接到服务器实例后,通过执行SQL语句进行;也可以通过配置作业,定时完成自动备份。联机备份不影响数据库正常提供服务,是最常用的备份手段之一。

    • 脱机备份

    数据库处于关闭状态时进行的备份操作,被称为脱机备份。

    V2.0版本开始,使用数据库自带的DMRMAN工具进行脱机备份,并且支持对异常关闭的数据库进行脱机库备份。备份异常关闭的数据库,要求配置了本地归档,如果本地归档不完整,则需要先修复本地归档,再进行备份。

    • 数据备份

    数据备份主要针对数据文件内容,包括库备份、表空间备份和表备份。

    • 归档日志备份

    归档日志备份,是专门针对归档日志文件进行操作,不涉及任何数据文件内容。归档日志备份扫描归档目录收集归档文件,并将归档日志写入到备份集中。

    • 完全备份

    完全备份生成的备份集包含了指定库(或者表空间)的全部有效数据页。当数据规模比较大的情况下,生成的完全备份集通常会比较大,而且备份时间也会比较长。

    • 增量备份

    增量备份是在某个特定备份集基础上,收集数据库新修改的数据页进行备份,可以有效减少备份集的空间占用、提高备份速度。

    根据对基备份的要求不同,DM的增量备份分为以下两种:

    1. 差异增量备份

    差异增量备份的基备份既可以是一个完全备份集,也可以是一个增量备份集。

    2. 累积增量备份

    累积增量备份的基备份只能是完全备份集,而不能是增量备份集。

    四、备份恢复示例

    以下过程演示DM7在中标麒麟Linux6环境中的脱机备份、联机备份、表空间恢复。

    • 脱机备份

    脱机备份时,先关闭数据库实例,并且DmAP服务是处于运行状态。

     

     两个服务都运行状态,先关闭数据库实例:

     

     执行脱机备份:

    [dmdba@dca7 ~]$ cd $DM_HOME/bin

    [dmdba@dca7 bin]$ ./dmrman

     

     备份成功。

    备份集保存路径为:

    [/dm7/data/DAMENG/bak/DB_DAMENG_FULL_20191206_162759_000485]

    • 联机备份

    联机备份时,数据库实例是联机运行状态,并且DmAP服务是处于运行状态,同时数据库是要设置打开归档模式。

    1设置归档模式,操作命令如下:

    SQL> alter database mount;  --mount状态

    SQL> alter database add archivelog 'type=local,dest=/dm7/arch,file_size=64,space_limit=0';  

    -- file_size是指单个REDO日志归档文件大小,取值范围(64M~2048M),缺省1024M

    SQL> alter database open; ---open状态

    SQL> select name,status$,arch_mode  from v$database;  ---查数据库的状态。

     

     已经设置归档模式。

    SQL> select * from v$dm_arch_ini;  ---查归档参数。

     

    2、备份数据库(全备和增量备份)

    SQL> backup database full backupset '/dm7/backup/full_bak';

     

     全备备份成功。

    SQL> select checkpoint(0);

     

     创建测试数据。

    SQL> backup database increment backupset '/dm7/backup/incr_bak';

     

     如果出现上述提示,可继续创建测试数据,或重启下数据库实例服务。

     

     增量备份成功。

    • 表空间恢复

    以下过程,模拟表空间数据文件(DMHR.DBF)损坏,并将其从备份文件中恢复出来。

    $ mv /dm7/data/DAMENG/DMHR.DBF /dm7/data/DMHR.DBF.bak

     

     

     重启下数据库服务:

    $ service DmServiceDMSERVER restart

     

     数据库处于MOUNT状态,这是由于数据文件故障所导致。

    先把数据库打开到OPEN状态:

     

     查看表空间状态:

     

     可以看到表空间DMHR状态为1,OFFLINE状态。

    表空间状态包括:ONLINE(联机状态)、OFFLINE(脱机状态)、RES_OFFLINE(还原状态)、CORRUPT(损坏状态)。0/1/2/3分别代表ONLINE状态/OFFLINE状态/RES_OFFLINE状态/CORRUPT状态。

    恢复表空间DMHR

    SQL> restore tablespace DMHR from backupset '/dm7/backup/full_bak';

     

     恢复完成,通过查看数据文件也已经恢复成功。

    把表空间ONLINE

     

     至此,表空间恢复完成。

    -- < END > --

  • 相关阅读:
    UVa-133-救济金发放
    UVa-340-猜数字
    UVa-1584-环状序列
    UVa-1585-得分
    UVa-1586-分子量
    BZOJ-3289: Mato的文件管理(莫队算法+树状数组)
    HDU-2824 The Euler function(欧拉函数)
    2017年10月12日22:27:20
    HDU-4715 Difference Between Primes(线性筛法)
    POJ-1185 炮兵阵地(状态压缩DP)
  • 原文地址:https://www.cnblogs.com/fengaix6/p/11996588.html
Copyright © 2020-2023  润新知