一、备份、还原、恢复的定义与分类
1、备份的定义与分类
定义:备份是将待备份的数据经过加密、压缩处理后,写到备份片文件中,并将相关备份信息写到元数据文件中的过程。
DM8中对备份的划分标准有如下几种:
- 备份组织形式划分:物理备份、逻辑备份
- 备份时数据库是否运行划分:联机备份(运行时)、脱机备份(非运行)
- 备份的粒度大小划分:库备份、表空间备份、归档备份、表备份
- 备份数据的一致性划分:一致性备份、非一致性备份
- 备份数据的完整性划分:完全备份、增量备份
注意:非一致性备份只包含数据文件相关内容,没有归档日志信息,因此非一致性备份需要借助归档日志进行还原恢复。
2、还原的定义与分类
定义:把备份集中的备份数据经过处理后,写回到还原目标库中相同的数据文件中的过程。
还原回来的数据通常是处于非一致性状态,需要执行恢复操作,使得目标数据库数据一致,才能对外提供服务。
划分类型的标准与备份的类似,具体如下:
- 1. 还原组织形式划分:物理还原、逻辑还原
- 2. 还原时数据库是否运行划分:联机还原、脱机还原
- 3. 还原的粒度大小划分:库还原、表空间还原、归档还原、表还原
- 4. 还原数据的完整性划分:完全备份还原、增量备份还原
-
注意:非一致性备份只包含数据文件相关内容,没有归档日志信息,因此非一致性备份需要借助归档日志进行还原恢复。
-
3、恢复的定义与分类
-
定义:恢复是重做本地归档日志或者备份集中备份的归档日志的过程。
特别注意:没有经过恢复的还原数据库是不允许启动的,表备份还原除外,因为表备份还原是联机执行的,不需要再执行恢复操作。不论从哪种方式恢复之后,最后都需要经过更新DB_MAGIC完成恢复操作。
根据恢复过程中是否重做归档日志,以及重做归档日志的来源,可将恢复划分为以下内容:
- 1. 从备份集恢复:利用备份集中备份日志的恢复过程
- 2. 从归档恢复:利用重做本地归档日志来恢复数据的过程;从归档恢复可恢复到最新状态,或指定的时间点、指定的LSN值。
-
二、DM8 备份还原技术原理
-
1、备份技术要点
-
(1)备份内容
CKPT_LSN:检查点LSN,<=CKPT_LSN的数据文件已落盘
BEGIN_LSN:备份日志开始CKPT_LSN+1;
END_LSN:备份日志结束FILE_LSN
FILE_LSN:文件LSN,已经写入联机redo日志文件的最大LSN值。
完全备份与增量备份:备份数据页与日志
(2)加密和压缩
压缩和加密均由用户显示指定;
压缩级别支持1~9级,级别越高压缩比例越高,相应的压缩速率越慢,默认的压缩级别是1。
加密:加密密码、加密类型(简单加密、完全加密)和加密算法。
若同时指定加密和压缩,则先压缩后加密。
注意:增量备份的加密算法和加密密码必须与其基备份中的一致。
(3)并行备份
DM8支持对库级、归档备份和表空间级的并行备份。
可通过关键字parallel指定是否执行并行备份,以及并行数,默认并行行数是4;如果指定并行行数值为0或1表示按照非并行处理。
并行备份以数据文件为单位,一个数据文件仅可能出现在一个并行分支中。
增量备份是否并行及并行数与其基备份集无关。
并行备份的备份集包括一个主备份集和若干个子备份集。备份过程中产生的redo日志保存在主备份集中,子备份集仅包含数据文件相关内容。任何一个子备份集不可单独还原。
-
2、还原与恢复技术要点
-
(1)还原过程
1)数据还原
还原与恢复是备份的逆过程,还原主要是将数据页从备份集写回到目标数据文件中;
恢复则是通过重做redo日志,将数据库恢复到备份结束时的一致性状态。
库还原需要用户准备目标库,且目标库建库参数需与备份库匹配,可通过DMRMAN的show backupset功能查看备份信息。
表空间还原则不允许跨库还原,只能在源库上执行还原。
2)归档还原
过程概述:
一:读取元数据文件,获取备份信息,校验备份集是否有效;
二:从用户指定的备份集中,收集归档文件,根据用户指定的过滤条件,过滤需要还原哪些归档;
三:根据用户指定的overwrite参数,确定如果目标归档文件已经存在的处理策略:
Overwrite=1:跳过已经存在的日志,继续其他日志的还原;
Overwrite=2:直接终止还原,报错返回;
Overwrite=3:强制覆盖存在的归档日志。
四:执行归档还原,从备份片中把数据去除,必要时经过解压缩&解密处理后回写到新的归档文件中,还原结束。
(2)恢复过程
备份集恢复有以下几种情况:
1)如果备份集中备份了归档日志,则只要将备份集中备份的归档日志读出并生成到一个临时归档文件中,然后重做该临时归档文件即可;
2)如果备份集中没有备份归档日志,则只需要重做本地归档中备份集start_lsn到end_lsn之间的一段归档即可;
3)如果start_lsn和end_lsn之间无日志,即start_lsn=end_lsn+1,那么只要更新db_magic即可。
三、备份还原方法
1、备份还原工具
(1)disql工具:联机数据备份与还原,包括库备份、表空间备份、表备份与还原;
(2)dmrman工具:脱机数据库备份还原与恢复;
(3)客户端工具MANAGER和CONSOLE:对应命令行工具Disql和DMRMAN的功能,分别用于联机和脱机备份还原数据。
2、归档配置
(1)使用SQL语句联机配置归档(配置完成后自动在dm.ini同级目录下生成dmarch.ini配置文件)
1)修改数据库为mount状态:
SQL> alter database mount;
2)配置本地归档:
SQL> alter database add archivelog 'dest=/home/dmdba/arch,type=local,file_size=1024,space_limit=10240';
3)开启归档模式:
SQL> alter database archivelog;
4)修改数据库为open状态:
SQL> alter database open;
5)查看归档日志配置信息:select * from v$dm_arch_ini;
查看当前数据库是否开启归档模式:select arch_mode from v$database;
(2)手动配置归档(需先停库)
手动编辑dmarch.ini文件,之后保存在dm.ini所在的目录,dmarch.ini文件内容如下:
[ARCHIVE_LOCAL]
ARCH_TYPE=LOCAL
ARCH_DEST = /home/dmdba/arch
或者ARCH_DEST = d:\dm_arch\arch(windows机器)
ARCH_FILE_SIZE=1024
ARCH_SPACE_LIMIT=10240
编辑dm.ini文件,设置参数ARCH_INI=1,保存(此步骤不可少);
启动服务器,服务器已运行于归档模式。
RMAN> remove backupsets with backupdir '/home/dmdba/backup' until time '2023-04-20 00:00:00';
3、联机执行SQL语句进行备份
在进行联机库级备份、表空间备份时,必须保证系统处于归档模式。
(1)数据库备份语法结构示例
1)最简单的数据库备份语句:
SQL> backup database backupset 'bak_full01';
2)指定备份集路径、设置备份名、指定介质类型、添加备份描述、限制备份片大小、备份压缩、并行备份对应语句:
SQL> backup database to weekly_full_bak backupset '/home/dmdba/backup/db_bak_3_02' device type disk backupinfo '完全备份' maxpiecesize 300 compressed level 5 parallel 8;
注意:指定的备份名、加密密码、加密算法名长度限制为128字节;mount模式下不允许数据库备份。
3)完全备份
full参数可省略,默认为完全备份,例如:
SQL> backup database full backupset '/home/dmdba/backup/db_full_bak_01';
完全备份中,可指定DDL_CLONE(数据库克隆)参数,只备份定义不备份数据。该参数只用于数据库级完全备份中。
4)增量备份示例:
SQL> backup database increment with backupdir '/home/dmdba/backup' backupset '/home/dmdba/backup/db_increment_bak_02';
(2)表空间备份语法结构示例
1)最简单的表空间备份语句:
SQL> backup tablespace tablespace_name backupset '/home/dmdba/backup/ts_bak_01';
2)指定基备份目录(不指定则搜索最近一次完全/增量备份作基备份)
SQL> backup tablespace tablespace_name increment base on backupset '/home/dmdba/backup/ts_full_bak_01' backupset '/home/dmdba/backup/ts_increment_bak_02';
(其他备份选项设置可参考库备份)
3)完全备份(full参数可省略,默认为完全备份)
SQL> backup tablespace tablespace_name full backupset '/home/dmdba/backup/ts_full_bak_01';
4)增量备份
SQL> backup tablespace tablespace_name increment with backupdir '/home/dmdba/backup' backupset '/home/dmdba/backup/ts_increment_bak_02';
注意:备机状态、Mount状态、MPP和RAC环境均不允许表空间备份。
(3)表备份
表备份均为联机完全备份,不需要备份归档日志,不存在增量备份之说。
最简单的表备份语句:
SQL> backup table table_name backupset '/home/dmdba/backup/tab_bak_01';
(其他备份选项设置参考库备份)
注意:备机状态、Mount状态、MPP和RAC环境均不允许表空间备份。
(4)归档备份
归档备份拷贝指定归档目录下的所有归档文件到备份集中。
备份归档需要服务器配置归档。
SQL> backup archive log all backupset '/home/dmdba/backup/arch_bak_01';
(5)备份加密
例如:数据库完全备份,创建加密密码为“Dameng123”,加密算法为“rc4”,复杂数据库加密备份:
SQL> backup database backupset '/home/dmdba/backup/db_bak_for_encrypt_01' identified by "Dameng123" with encryption 2 encrypt with rc4;
其中参数with encryption(默认为1,简单加密)和encrypt with(默认加密算法为AES256_CFB)可不指定。
(6)备份设置跟踪日志文件
以数据库完全备份为例,为备份设置跟踪日志文件:
SQL> backup database backupset '/home/dmdba/backup/db_bak_for_trace_01' trace file '/home/dmdba/dm_log/db_bak_trace.log' trace level 2;
其中,参数trace file用于指定生成的跟踪日志文件路径;trace level表示是否启用trace,有效值为1和2,1表示不启用trace功能,2表示启动trace功能,系统默认值为1不启用trace功能。
(7)管理备份
1)备份管理相关系统过程和函数总结如下:
SF_RMAN_ADD_BACKUP_DIR:添加备份目录
SF_RMAN_REMOVE_BACKUP_DIR:指定删除内存中的备份目录
SF_RMAN_REMOVE_BACKUP_DIR_ALL:删除内存中全部的备份目录
SF_RMAN_BAKSET_CHECK:校验指定的备份文件
SF_RMAN_BAKSET_REMOVE:删除指定的备份集
SF_RMAN_BATCH_DEL_DB_BAKSET:批量删除数据库备份集
SF_RMAN_BATCH_DEL_TS_BAKSET:批量删除表空间备份集
SF_RMAN_BATCH_DEL_TAB_BAKSET:批量删除表备份集
2)备份管理相关动态视图总结如下:
v$backupset:显示备份集基本信息
v$backupset_dbinfo:显示备份集的数据库相关信息
v$backupset_dbf:显示备份集中数据文件的相关信息
v$backupset_arch:显示备份集的归档信息
v$backupset_rlog:显示备份集的日志信息
v$backupset_bkp:显示备份集的备份片信息
v$backupset_search_dirs:显示备份集搜索目录
v$backupset_table:显示表备份集中备份表信息
v$backupset_index:显示表备份集中备份索引信息
v$backupset_subs:显示并行备份中生成的子备份集信息
4、联机执行SQL语句进行备份还原
(1)使用disql执行备份还原
以表还原为例,通过disql执行还原过程如下:
注意:表还原不需要配置归档,数据库处于open状态,且表还原是联机完全备份还原,因此还原后不需要恢复
1)保证数据库为open状态:
SQL> select status from v$database;
2)创建待备份的表:
SQL> create table test(c1 int);
3)创建索引:
SQL> create index I_TEST on test(c1);
4)备份表:
SQL> backup table test backupset '/home/dmdba/backup/tab_bak_for_res_02';
5)校验备份,此步骤可选择性执行:
SQL> select SF_BAKSET_CHECK('DISK','/home/dmdba/backup/tab_bak_for_res_02');
6)执行表结构还原,表备份和表中都包含索引,如果直接执行表数据还原会报错,还原表中存在二级索引或冗余约束。
SQL> restore table struct test from backupset '/home/dmdba/backup/tab_bak_for_res_02';
7)执行表数据还原:
SQL> restore table test from backupset '/home/dmdba/backup/tab_bak_for_res_02';
5、通过dmrman工具进行备份
DMRMAN(DM RECOVERY MANAGER)是DM8脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、数据库恢复等相关操作。
数据库处于脱机状态。
(1)创建完全备份示例
RMAN> backup database '/dm8/data/DAMENG/dm.ini' full backupset '/home/dmdba/backup/db_full_bak_01';
(2)创建增量备份示例
RMAN> backup database '/dm8/data/DAMENG/dm.ini' increment with backupdir '/home/dmdba/backup/db_increment_bak_02';
(3)创建归档备份示例
RMAN> backup archive log all database '/dm8/data/DAMENG/dm.ini' backupset '/home/dmdba/backup/arch_all_bak_01';
(4)创建设置条件的归档备份示例
通过设置LSN或时间点,控制需要备份归档的范围。
RMAN> backup archive log lsn between 50000 and 20000 database '/dm8/data/DAMENG/dm.ini' backupset '/home/dmdba/backup/db_increment_bak_02';
(5)创建脱机备份加密
例如数据库完全备份,创建加密密码为“cdb546”,加密算法为“rc4”,复杂数据库加密备份,语法如下:
RMAN> backup database '/dm8/data/DAMENG/dm.ini' backupset '/home/dmdba/backup/db_bak_for_encrypt_04' identified by "cdb546" with encryption 2 encrypt with rc4;
其中参数with encryption(默认为1,简单加密)和encrypt with(默认加密算法为AES256_CFB)可不指定。
(6)rman备份设置跟踪日志文件
与disql不同,dmrman不可在备份时指定参数生成跟踪文件,只能使用configure命令进行事先配置。
例如:为数据库脱机备份设置跟踪日志文件
1)用configure命令配置生成跟踪日志文件:
RMAN> configure default trace file '/home/dmdba/dm_log/trace.log' trace level 2;
2)备份数据库:
RMAN> backup database '/dm8/data/DAMENG/dm.ini' backupset '/home/dmdba/backup/db_bak_for_trace_01';
查看/home/dmdba/dm_log/trace.log文件即可跟踪本次备份的SBT接口调用过程。
(7)管理备份
1)查看备份集信息
RMAN> show backupset '/home/dmdba/backup/db_bak_for_show_01';
2)校验特定备份集
RMAN> check backupset '/home/dmdba/backup/dm_bak_for_check_02' database '/dm8/data/DAMENG/dm.ini';
3)删除备份集
RMAN> remove backupset '/home/dmdba/backup/db_bak_for_remove_01';
4)批量删除指定目录下所有的备份集:
RMAN> remove backupsets with backupdir '/home/dmdba/backup';
5)批量删除指定时间之前的备份集:
RMAN> remove backupsets with backupdir '/home/dmdba/backup' until time '2023-04-20 00:00:00';
学习社区: 达梦在线服务平台(https://eco.dameng.com)