介绍《备份与还原简介》地址:https://blog.csdn.net/chenyu940415/article/details/108147836
介绍《备份与还原原理》地址:https://blog.csdn.net/chenyu940415/article/details/108149900
-
概述
DM 提供各种工具进行备份还原与恢复的操作,包括 DIsql工具、DMRMAN 工具、图形化客户端管理工具 MANAGER 和 CONSOLE。
DIsql 工具用于执行联机的数据备份与数据还原,包括数据库备份、归档备份、表空间备份与还原、表备份与还原;
DMRMAN 工具用于执行脱机的数据备份、还原与恢复,包括脱机的数据库备份、还原与恢复,脱机还原表空间,归档的备份、还原与修复;
客户端工具 MANAGER 和 CONSOLE对应命令行工具 DIsql 和 DMRMAN 的功能,分别用于联机和脱机备份还原数据。
这四种工具都可以独立使用,也可以相互配合。 -
支持与限制
联机备份:
1 ) MPP 环境仅允许库和归档备份,且各节点都会执行,生成相应的备份集,支持 DDL CLONE;
2 )DSC 环境支持库备份、表空间备份和表备份,要求 DSC 环境的所有节点都处于 OPEN状态;
3 ) MOUNT 状态仅支持归档备份;
4 ) SUSPEND 状态所有备份均不支持;
5 ) OPEN 状态支持所有备份,支持 DDL CLONE;
6 ) PRIMARY 模式支持所有备份,支持 DDL CLONE;
7 ) STANDBY 模式仅支持库级、表空间级和归档备份,支持 DDL CLONE;
8 ) DDL CLONE 必须备份归档,不允许指定 WITHOUT LOG。
联机还原:
仅支持表级还原,对联机还原的支持与限制:
1 ) MPP 不支持;
2 ) PRIMARY 支持;
3 ) SUSPEND 状态所有还原均不支持;
4 ) OPEN/NORMAL 支持。
脱机备份:
脱机备份支持库级和归档备份。
1 ) MPP 视同单机环境,仅当前节点执行备份操作;
2 ) 允许异常退出后备份,支持 DDL_CLONE;
3 ) DSC 支持库级备份,支持 DDL_CLONE;当 DSC 环境下正常节点的 CKPT_LSN 小于故障节点的 CKPT_LSN 时,不支持脱机备份。
脱机还原:
脱机还原跟目标库所处的模式、状态以及集群环境(MPP 和 DSC)无关,允许库级、表空间级和归档还原。
在一般的应用场景中,常规性的数据库维护工作,即在不影响数据库正常运行的情况下,建议定期执行联机数据库备份,且完全备份和增量备份结合使用。执行两次完全备份的时间间隔可以尽量长一点,在两次完全备份之间执行一定数量的增量备份,比如,可以选择每周执行一次完全备份,一周内每天执行一次增量备份。为了尽量减少对数据库正常工作的影响,建议备份时间,选择在工作量较少的时间,比如深夜。 -
归档配置
3.1 概述:
DM 数据库可以运行在归档模式或非归档模式下。如果是归档模式,联机日志文件中的内容保存到硬盘中,形成归档日志文件;如果是非归档模式,则不会形成归档日志。采用归档模式会对系统的性能产生些许影响,然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小,这是因为一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,而如果没有归档日志文件,则只能利用备份进行恢复。
通过dm.ini和dmarch.ini可以配置本地归档。dmarch.ini生效的前提是dm.ini中的参数 ARCH_INI 置为 1。
DM 的 dmarch.ini 可以进行本地归档和远程归档的设置,DM 备份与还原过程中使用的日志均为本地归档日志。3.2 何时配置归档:
联机备份数据库必须要配置归档。联机备份时,大量的事务处于活动状态,为确保备份数据的一致性,需要同时备份一段日志(备份期间产生的 REDO 日志),因此要求数据库必须配置本地归档且归档必须处于开启状态。
脱机备份数据库可配置归档也可以不配置。正常退出的库的备份不需要考虑本地归档日志的完整性,可以不配置归档;但对于故障退出的库的备份要求因故障未刷盘的日志也必须存在于本地归档中,因此必须配置归档,如果本地归档缺失,需要用户先修复归档,然后再备份。
备份表空间属于联机备份,必须配置归档。
备份表虽然是联机完全备份,但不需要配置归档。因为表在还原之后不需要再进行恢复操作,用不到归档日志。
备份归档日志必须配置归档。3.3 配置本地归档
归档配置有两种方式:
一是联机归档配置,数据库实例启动情况下,使用 SQL 语句完成 dmarch.ini 和 ARCH_INI 配置;
二是手动配置归档,数据库实例未启动的情况下,手动编写 dmarch.ini 文件和设置参数 ARCH_INI。下面将分别说明这两种归档如何配置。使用 SQL 语句配置本地归档:
1 ) 修改数据库为 MOUNT 状态:SQL>ALTER DATABASE MOUNT;
2 ) 配置本地归档:
SQL>ALTER DATABASE ADD ARCHIVELOG 'DEST = /sm8/data/arch, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
3 ) 开启归档模式:
SQL>ALTER DATABASE ARCHIVELOG;
4 ) 修改数据库为 OPEN 状态:
SQL>ALTER DATABASE OPEN;
手动配置归档
1 ) 手动编辑 dmarch.ini 文件,之后保存在 dm.ini 所在的目录。dmarch.ini 文件内容如下:[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = d:\dm_arch\arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 2048
2 ) 编辑 dm.ini 文件,设置参数 ARCH_INI=1,保存。
3 ) 启动数据库实例,数据库已运行于归档模式。3.4 配置远程归档
与本地归档一样,远程归档也是配置在 dmarch.ini 文件中,远程归档相关的主要几个配置项包括:
①ARCH_TYPE 设置为 REMOTE,表示是远程归档。
②ARCH_DEST 设置为远程数据库实例名,表示 REDO 日志发送到这个节点。
③ARCH_INCOMING_PATH 设置为本地存储路径,用于保存 ARCH_DEST 实例发送的REDO 日志。
一般建议 DMDSC 集群中的节点,在配置本地归档之外,再交叉配置集群中所有其他节点的远程归档。查询 V$ DM_ARCH_INI、V$ARCH_STATUS 等动态视图可以获取归档配置以及归档状态等相关信息。
下面以两节点 DMDSC 集群为例,说明如何配置远程归档,DSC0 和 DSC1 是 DMDSC 集群中的两个实例,交叉进行 REMOTE 归档配置:
DSC0 实例的 dmarch.ini 配置:[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/dameng/arch_dsc0 ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 [ARCH_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC1 ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc1 ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0
DSC1 实例的 dmarch.ini 配置:
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/dameng/arch_dsc1 ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 [ARCH_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC0 ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc0 ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0
-
使用联机执行 SQL 语句进行备份还原
4.1 概述:
DM 支持通过联机执行 SQL 语句方式对数据库执行备份还原操作。联机方式支持数据库、用户表空间、用户表和归档的备份,用户表的还原。在进行联机库级备份、归档备份和表空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。4.2 数据库备份
在 DIsql 工具中使用 BACKUP 语句可以备份整个数据库。通常情况下,在数据库实例配置归档后输入以下语句即可备份数据库:SQL> backup database backupset '/dm8/backup/db.bak';
①备份成功后会在<备份集路径>或者备份默认目录下生成备份集。备份集中包括一个备份元数据文件,后缀.meta,一个或多个备份片文件,后缀.bak。
②当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
③系统处于归档模式下时,才允许进行数据库联机备份。若备份库为 DSC 库,且未指定 WITHOUT LOG,则也需要配置 REMOTE 归档。
④MOUNT 状态下不允许进行数据库备份。
⑤DDL_CLONE 库备份集不能作为增量备份的基备份,仅能用于库级还原。
⑥在执行联机数据库备份过程中,如果报错归档不完整,则需要先执行生成检查点操作,才能正常备份。例如:select checkpoint(50);
FULL:备份类型。FULL 表示完全备份,可不指定,默认为完全备份。
DDL_CLONE:数据库克隆。该参数只能用于完全备份中,表示仅拷贝所有的元数据不拷贝数据。如对于数据库中的表来说,只备份表的定义不备份表中数据。表空间和表备份不支持该参数。4.3 表空间备份
表空间备份数据库实例也必须运行在归档模式下:backup tablespace dmhr backupset '/dm8/backup/dmhr';
4.4 表备份:
backup table dmhr.city backupset '/dm8/backup/city';
4.5 归档备份:
在 DIsql 工具中使用 BACKUP 语句可以备份归档日志。使用归档备份的前提:一是,归档文件的 db_magic、permanent_magic 值和库的 db_magic、permanent_magic值必须一样;二是,服务器必须配置归档;三是,归档日志必须连续,如果出现不连续的情况,前面的会忽略,仅备份最新的连续部分。如果未收集到指定范围内的归档,则不会备份。联机备份的时候经常会切换归档文件,最后一个归档总是空的,所以最后一个归档不会被备份。backup archivelog backupset '/dm8/backup/arch';
例如,备份归档日志,通过 LSN BETWEEN … AND …来指定起始和截至 LSN。首先,确定 LSN 范围:
SQL>select ARCH_LSN, CLSN, PATH from V$ARCH_FILE; 查询结果为: ARCH_LSN CLSN PATH 38758 40301 d:\arch\ARCHIVE_LOCAL1_20180727105417748.log 40302 40303 d:\arch\ARCHIVE_LOCAL1_20180727111411079.log 40304 40305 d:\arch\ARCHIVE_LOCAL1_20180727111513679.log …… 50412 50413 d:\arch\ARCHIVE_LOCAL1_20180727171801098.log 50414 50478 d:\arch\ARCHIVE_LOCAL1_20180727171849712.log …… 通过查询结果选出备份的起始 LSN 和截至 LSN。比如 50414 50478
备份归档:
BACKUP ARCHIVELOGLSN BETWEEN 50414 AND 50478 BACKUPSET '/home/dm_bak/arch_bak_time_14-78';
4.6 备份集校验与删除:
对备份集进行校验:SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/ db_bak_for_check');
4.7 数据还原:
表还原之后不需要恢复操作:SQL>RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';
4.8 完整的表备份还原步骤如下:
1 ) 保证数据库为 OPEN 状态。
2 ) 创建待备份的表。SQL>CREATE TABLE TAB_FOR_RES_01(C1 INT);
3 ) 备份表数据。
SQL>BACKUP TABLE TAB_FOR_RES_01 BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
4 ) 校验备份。此步骤为可选。
SQL>SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/tab_bak_for_res_01');
5 ) 还原表数据。
SQL>RESTORE TABLE TAB_FOR_RES FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
-
使用脱机工具 DMRMAN 进行备份还原
DMRMAN(DM RECOVERY MANEGER)是 DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。
5.1 DMRMAN 中输入以下命令即可备份数据库:[dmdba@localhost bin]$ ./dmrman RMAN> backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup/20200708';
5.2备份归档:
RMAN>BACKUP ARCHIVE LOG DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
5.3数据库还原和恢复:
还原:RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/20200708'; 恢复:RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
-
使用 MANAGER 工具进行联机备份还原:
6.1 打开DM管理工具
6.2 新建备份:
-
使用 CONSOLE 工具进行脱机备份还原: