【达梦8】物理备份还原

数据物理备份还原

DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。而在备份的过程中,如果数据库系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日志的形式写到归档日志中,因此,为了保证用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。
还原与恢复是备份的逆过程。还原是将备份集中的有效数据页重新写入目标数据文件的 过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复 到指定时间点和指定 LSN。恢复结束以后,数据库中可能存在处于未提交状态的活动事务, 这些活动事务在恢复结束后的第一次数据库系统启动时,会由 DM 数据库自动进行回滚。

1、重做日志

重做日志,又叫 REDO 日志,忠实记录了所有物理页的修改,基本信息包括操作类型、 表空间号、文件号、页号、页内偏移、实际数据等。数据库中 INSERT、DELETE、UPDATE 等 DML 操作以及 CREATE TABLE 等 DDL 操作最终都会转化为对某些数据文件、某些数据页 的修改。因此,在系统故障重启时,通过重做 REDO 日志,可以将数据库恢复到故障时的状态。
DM 数据库默认包含两个扩展名为 log 的日志文件,用来保存 REDO 日志,称为联机重做日志文件。这两个文件循环使用。任何数据页从内存缓冲区写入磁盘之前,必须保证其对应的 REDO 日志已经写入到联机日志文件。

2、归档日志

DM 支持多种归档方式。系统在归档模式下运行会更安全,当出现介质故障,如磁盘损坏导致数据文件丢失、异常时,利用归档日志,系统可以恢复至故障发生的前一刻。因此,为了保证归档日志文件和数据文件不同时出现问题,建议将归档目录与数据文件配置、保存到不同的物理磁盘上。除了表备份还原,其他的联机备份与还原必须运行在归档模式下。

3、LSN

LSN(Log Sequence Number)是由系统自动维护的 Bigint 类型数值,具有自动递增、全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个物理事务。。物理事务(Physical Transaction,简称 PTX)是数据库内部一系列修改物理数据页操作的集合,与数据库管理系统中事务(Transaction)概念相对应,具有原子性、有序性、无法撤销等特性。

4、包序号

每个 RLOG_PKG 都有对应的序号属性,称之为包序号(PKG SEQNO),日志包生成时按照序号连续递增。包序号包括本地包序号(LSEQ)和全局包序号(GSEQ),本地包序号是节点内唯一、连续递增的值,用于校验联机日志连续性;全局包序号由数据守护集群的主备库共同维护,具有全局唯一、连续、递增的特性,用于校验归档日志的连续性。

5、检查点

检查点(checkpoint)是一个数据库事件,它的功能是按照数据页的修改顺序,依次将 BUFFER 缓冲区中的脏页写入磁盘,并在这个过程中动态调整 CKPT_LSN 值,释放日志空间。

6、备份集

备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。并行备份和非并行备份情况下,备份集里的内容略有不同。

1)备份片

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

2)元数据

元数据文件用来存放备份信息,元数据文件的后缀为.meta。通过元数据文件,可以了解整个备份集信息。元数据文件中包含由:1、备份集本身想过信息;2、备份源库的建库参数信息;3、数据文件信息;4、备份片信息;5、备份库的dm.ini参数信息和密钥文件。

7、备份

任何对DM数据库的操作,都是某个数据文件页的读写操作。物理备份就是把这些数据文件中有效的数据页备份出来,当出现故障时,用于恢复数据。一份完整的物理备份包括数据备份和redo日志备份。数据备份是拷贝数据页内容,redo日志备份是拷贝备份过程中产生的redo日志。

1)联机备份和脱机备份

数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作,我们称为联机备份。数据库处于关闭状态时进行的备份操作,被称为脱机备份。
联机备份时,可能存在一些处于活动状态的事务正在执行,为确保备份数据的一致性,需要将备份期间产生的 REDO 日志一起备份。因此,只能在配置本地归档、并开启本地归档的数据库上执行联机备份。
只有已经关闭的数据库才允许执行脱机备份。正在运行的数据库,无法执行脱机备份,系统会报错。

2)数据备份

数据备份过程中,根据DM数据文件系统的描述信息,判断每个数据页是否被分配、使用,将未使用的数据页剔除,仅保留有效数据页进行备份。跟直接进行文件拷贝的方式对比,物理备份丢弃了没有使用的数据页,能节省对存储空的需要,减少IO,提升效率。

(1)库备份
DM支持联机和脱机库级备份。库备份分为完全备份和增量备份。

—完全备份
执行完全备份,备份程序会扫描数据文件,拷贝所有被分配、使用的数据页,写入到备份片文件中。库备份会扫描整个数据库的所有数据文件。

—增量备份
执行增量备份,备份程序会扫描数据文件,拷贝所有基备份结束以后被修改的数据页,写入到备份片文件中。

(2)表空间备份
DM只支持联机表空间备份。不支持对TMP表空间进行备份还原。表空间备份支持完全备份和增量备份。表空间备份只拷贝指定表空间的数据页。

(3)表备份
DM只支持联机表备份且不支持增量备份。表备份主要包括数据备份和元信息备份两部分。表备份不直接扫描数据文件,而是从buffer中加载数据页,拷贝到备份文件中。

3)一致性备份和非一致性备份

不指定 WITHOUT LOG 选项的备份生成的备份集就是一致性备份。一致性备份的备份集包含了完整的数据文件内容和 REDO 日志信息;利用一个一致性备份集就可以将数据库恢复到备份时状态。
指定 WITHOUT LOG 选项的备份生成的备份集都是非一致性备份集。非一致性备份的备份集只包含数据文件相关内容,没有 REDO 日志信息,利用非一致性备份集还原的数据库,无法直接启动,必须借助归档日志进行恢复之后才可以启动。

4)完全备份和增量备份

完全备份生成的备份集包含了指定库的全部有效数据页。当数据规模比较大的情况下,生成的完全备份集通常会比较大,而且备份时间也会比较长。
增量备份是在某个特定备份集基础上,收集数据库新修改的数据页进行备份,可以有效减少备份集的空间占用、提高备份速度。

5)备份附加项

(1)REDO日志备份
只有库级别和表空间级别备份支持REDO日志备份。若没有指定without log 参数执行库备份或表空间备份则包含了REDO日志备份。
通过 WITHOUT LOG 可取消REDO 日志的拷贝,该情况下生成的备份本身是不完整的,还原后,还要依赖备份库的本地归档日志来进行恢复操作,才能将数据恢复到一致性状态;否则,还原后的数据库将无法正常启动。

(2)压缩与加密
DM支持9个级别的压缩处理,级别越高压缩比越高,但响应的压缩速度越慢,CPU消耗越大。备份加密包括加密密码、加密类型和加密算法三个要素。加密密码通过使用 IDENTIFIED BY来指定,使用备份集的时候必须输入对应密码。

(3)并行备份
库备份、表空间备份以及归档日志备份可以进行并行处理,用户通过关键字 PARALLEL 指定是否执行并行备份,以及并行备份的并行数。
执行并行备份会生成一个主备份集和若干个子备份集,子备份集不能单独还原,也不能作为其他备份集的基备份。备份过程中产生的 REDO 日志保存在主备份集中,子备份集仅包含数据文件相关内容。

8、还原

还原包括数据还原和数据恢复两步。数据还原将目标数据库还原到备份结束时刻的状态。数据恢复则重做redo日志将数据库恢复到一致性状态。
还原恢复时,若性能差,则可以考虑通过适当增大dm.ini 文件中buffer的参数值或根据当前主机核数调整REDOS_PARALLEL_NUM 的参数值来提升还原恢复性能。

1)联机还原和脱机还原

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

2)数据还原

(1)库还原
库还原就是根据库备份集中记录的文件信息重新创建数据库文件,并将数据页重新拷贝到目标数据库的过程。DM 既可以将一个已存在的数据库作为还原目标库,也可以指定一个 路径作为还原目标库的目录。库还原的主要步骤包括:清理目标库环境;重建数据库文件; 拷贝数据页;重建联机日志文件;修改配置参数等。

(2)表空间还原
表空间还原是根据库备份集或表空间备份集中记录的数据信息,重建目标表空间数据文件并拷贝数据页的过程,该过程不涉及日志操作。表空间还原只可以在脱机状态下执行。脱机时通过 DMRMAN 工具执行,对表空间状态没有限制。

(3)表还原
表还原是表备份的逆过程,表还原从表备份集中读取数据替换目标表,将目标表还原成备份时刻的状态。表还原主要包括三部分内容:表结构还原、数据还原、以及重建索引和约束。表还原只支持在联机状态下执行,表还原过程中也不需要重做 REDO 日志。

3)完全还原和增量还原

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

4)数据恢复

数据恢复是指在还原执行结束后,重做 REDO 日志,将数据库恢复到一致性状态,并执行更新 DB_MAGIC 的过程。其中重做 REDO 日志可以多次执行,直到恢复到目标状态。还原结束后,必须经过恢复操作,数据库才允许启动。

(1)数据库恢复
数据库恢复分为两步:一恢复一致性;二更新 DB_MAGIC。恢复一致性有两种途径:一是通过指定备份集恢复;二是通过指定归档恢复。

(2)表空间恢复
表空间恢复的 REDO 日志是从本地归档日志文件中提取。一般要求在表空间还原后,重做指定表空间所有 REDO 日志将这个表空间数据恢复到最新状态。与表空间还原类似,表空间恢复也只能在脱机状态下通过 DMRMAN 工具完成。

(3)DMDSC库恢复
DMDSC库与普通单节点数据库的区别在于DMDSC库的多个节点共同维护一份库数据, 每个节点上都有独立的联机日志和本地归档日志。重做 REDO 日志恢复时,需要重做所有节点上的 REDO 日志,因此需要提供各个节点的归档日志。

5)还原与恢复附加项

(1)解密与解压缩
若备份时进行了加密,则还原时用户要指定与备份时一致的加密密码和加密算法,否则还原会报错。解压缩操作不需要用户干预,若备份集指定了压缩,从备份集读取数据到目标文件前会自动进行解压缩操作。

(2)并行还原
并行备份生成的备份集,在还原时默认采用并行方式还原,并行度上限为备份时指定的并行数,实际并行度由 DMAP 最终创建成功的并行子任务数决定。目前,非并行备份生成的备份集,不支持以并行方式还原。

物理备份还原测试

1、联机备份还原测试

1)归档设置(联机备份必须设置归档)

(1)联机配置归档
—修改数据库为mount状态
SQL> alter database mount;
在这里插入图片描述
—开启归档模式
SQL> alter database archivelog;
在这里插入图片描述
—设置归档
SQL> alter database add ARCHIVELOG ‘dest = /dmarch,type = local,file_size=1024,space_limit=10240’;
在这里插入图片描述
—开启数据库
SQL> alter database open;
在这里插入图片描述
—验证当前归档状态
SQL> select name,arch_mode from v$database;
在这里插入图片描述
(2)手动配置归档(需要关闭实例)
—修改dm.ini文件
修改 ARCH_INI = 1
在这里插入图片描述
—编辑 dmarch.ini 文件
在这里插入图片描述

2)数据备份(open状态下)

(1)数据库备份
—完全备份
在这里插入图片描述
—压缩和并行备份(仅指定compressed 默认级别1)
SQL> BACKUP DATABASE FULL BACKUPSET ‘/dmbak/full_0523_02’ COMPRESSED PARALLEL 4;
在这里插入图片描述

(2)mount状态下备份测试
—mount状态测试
在这里插入图片描述
注:联机备份只支持open状态下执行,其他状态下不允许备份。

(3)增量备份
—差异增量备份
SQL> BACKUP DATABASE INCREMENT with backupdir ‘/dmbak/full_0523_01’ backupset ‘/dmbak/incr_0523_1’;
在这里插入图片描述
—累积增量备份(需指定cumulative参数)
SQL> backup database increment cumulative with backupdir ‘/dmbak/full_0523_01’ backupset ‘/dmbak/cum_0523_01’;
SQL> backup database increment cumulative with backupdir ‘/dmbak/cum_0523_01’ backupset ‘/dmbak/cum_0523_02’;
在这里插入图片描述
(2)表空间备份
—完全备份表空间
SQL> backup tablespace MAIN BACKUPSET ‘/dmbak/tablespace/main_01’;
在这里插入图片描述
—增量备份表空间
SQL> backup tablespace main increment with backupdir ‘/dmbak/tablespace/main_01’ backupset ‘/dmbak/tablespace/main_incr01’;
在这里插入图片描述
(3)表备份
SQL> backup table sysdba.TEST_TIME BACKUPSET ‘/dmbak/table/test01’;
在这里插入图片描述
(4)归档备份
—完全备份归档
SQL> backup ARCHIVE LOG ALL BACKUPSET ‘/dmbak/arch/all_01’;
在这里插入图片描述
—指定LSN备份归档
SQL> select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;
SQL> backup archivelog lsn between 62126081 and 62127002 backupset ‘/dmbak/arch/all_02’;
在这里插入图片描述

3)备份管理

(1)备份集校验与删除
—校验测试(1表示备份集目录存在且合法;否则报错)
SQL> select sf_bakset_check(‘disk’,‘/dmbak/full_0523_01’);
在这里插入图片描述
—删除备份
SQL> select sf_bakset_remove(‘disk’,‘/dmbak/arch/all_02’);
在这里插入图片描述
—批量删除
SQL> select sf_bakset_remove_batch(‘DISK’,now(),4,null);
在这里插入图片描述
(2)备份目录
—新增目录
SQL> select sf_bakset_backup_dir_add(‘DISK’,‘/dmbak/tesk_bak’);
在这里插入图片描述
—查看备份目录
SQL> select * from V$BACKUPSET_SEARCH_DIRS;
在这里插入图片描述
—删除目录
SQL> select sf_bakset_backup_dir_remove(‘DISK’,‘/dmbak/tesk_bak’);
在这里插入图片描述

4)备份还原(只支持表的联机还原)

—校验表备份
SQL> select sf_bakset_check(‘DISK’,‘/dmbak/table/test01’);
在这里插入图片描述
—还原表备份
SQL> restore table sysdba.test_time from backupset ‘/dmbak/table/test01’;

2、脱机备份还原测试

1)dmrman命令

在这里插入图片描述

2)数据备份(实例关闭状态下)

(1)dmrman环境配置
—查看环境配置
RMAN> configure
在这里插入图片描述
—清理默认配置项
RMAN> configure clear;

在这里插入图片描述
—配置备份搜索路径(路径要提前创建)
RMAN> configure default backupdir ‘/dmbak/rman’;
在这里插入图片描述
(2)备份数据库
—完全备份
RMAN> backup database ‘/dmdata/DM/dm.ini’ full backupset ‘/dmbak/rman/full01’;
在这里插入图片描述
—差异增量备份
RMAN> BACKUP DATABASE ‘/dmdata/DM/dm.ini’ INCREMENT with backupdir ‘/dmbak/rman/full01’ backupset ‘/dmbak/rman/incr01’;

在这里插入图片描述
—累计增量备份
RMAN> backup database ‘/dmdata/DM/dm.ini’ increment cumulative with backupdir ‘/dmbak/rman/full01’ backupset ‘/dmbak/rman/cum01’;
在这里插入图片描述
(3)归档备份
—归档完全备份
RMAN> backup archive log all database ‘/dmdata/DM/dm.ini’ backupset ‘/dmbak/arch/arch01’;
在这里插入图片描述
—基于lsn备份归档
RMAN> backup archive log lsn between 62126081 and 62127002 database ‘/dmdata/DM/dm.ini’ backupset ‘/dmbak/arch/arch02’;

在这里插入图片描述

3)数据管理

(1)备份集信息查看
RMAN> show backupset ‘/dmbak/rman/full01’;

在这里插入图片描述
(2)备份集校验
RMAN> check backupset ‘/dmbak/rman/full01’;
在这里插入图片描述
(3)删除备份集
RMAN> remove backupset ‘/dmbak/rman/cum01’;

在这里插入图片描述

4)数据还原

(1)数据库还原与恢复
—数据库还原
RMAN> restore database ‘/dmdata/DM/dm.ini’ from backupset ‘/dmbak/rman/full01’;
在这里插入图片描述
—数据库恢复
在恢复前尝试启动数据库是无法启动成功的
在这里插入图片描述
RMAN> recover database ‘/dmdata/DM/dm.ini’ from backupset ‘/dmbak/rman/full01’;
在这里插入图片描述
—更新db_magic
RMAN> recover database ‘/dmdata/DM/dm.ini’ update db_magic;
在这里插入图片描述
—启动数据库
/dmsoft/dmdbms/bin/dmserver /dmdata/DM/dm.ini
在这里插入图片描述
(2)表空间还原与恢复
—还原表空间
RMAN> restore database ‘/dmdata/DM/dm.ini’ tablespace test_del from backupset ‘/dmbak/rman/full_del’;
在这里插入图片描述
—恢复表空间
RMAN> recover database ‘/dmdata/DM/dm.ini’ tablespace test_del;
在这里插入图片描述
(3)还原到指定时间点
—数据库还原
RMAN> restore database ‘/dmdata/DM/dm.ini’ from backupset ‘/dmbak/full_0531’;
在这里插入图片描述
—恢复到指定时间点
RMAN> recover database ‘/dmdata/DM/dm.ini’ with archivedir ‘/dmarch’ until time ‘2024-05-31 16:13:00’;
在这里插入图片描述
—恢复日志文件
RMAN> recover database ‘/dmdata/DM/dm.ini’ from backupset ‘/dmbak/rman/full01’;

社区地址:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值