DMDSC 集群备份还原的功能、语法与单节点数据库基本保持一致,本章主要介绍 DMDSC 集群与单节点数据库备份、还原的使用方法差异,并说明在 DMDSC 集群中执行备份还原的一些注意事项。关于备份还原更详细的说明,请参考《DM8 备份与还原》手册。
16.1 DMDSC 和单节点差异
达梦数据库中,备份还原的对象包括:表、表空间和数据库。表备份还原的操作对象是数据页,而数据页是通过 BUFFER 获取的,与存储无关,因此 DMDSC 集群的表备份还原与单节点没有任何区别。表空间备份只需要访问属于这个表空间的数据文件,并不需要备份归档日志,因此 DMDSC 集群的表空间备份与单节点没有任何区别。表空间还原要求将表空间数据恢复到最新状态,需要重做归档日志,集群节点需要访问其他节点的本地归档日志。另外,数据库备份以及数据库恢复操作均需要访问其他节点的本地归档日志文件。因此 DMDSC 集群支持节点间相互配置远程归档,配置远程归档后集群中的任一节点均能成功访问其他所有节点的本地归档日志,解决了 DMDSC 集群备份还原过程中访问其他节点归档日志文件问题。DMDSC 集群备份恢复的使用方法与单节点基本保持一致。
16.2 远程归档
16.2.1 简介
远程归档(REMOTE ARCHIVE)专门用于 DMDSC 环境中,是将当前节点的远程归档目录配置为另一节点的本地归档目录,以此来共享它的本地归档日志文件。其中,另一节点的本地归档目录必须位于 ASM 共享存储或其他共享磁盘上,以使当前节点可以成功访问。
远程归档采用双向配置的方式,即两个节点将自己的远程归档相互配置在对方机器上。集群中所有的节点,都拥有一套包括所有节点的,完整的归档日志文件。
注意远程归档必须双向配置。否则,单向配置后远程归档会处于无效状态。
共享本地归档的远程归档就是双向配置的两个节点都将对方的本地归档作为自己的远程归档。例如,节点 0 的本地归档配置在 ASM 共享存储或其他共享磁盘上。节点 1 可以通过将自己的远程归档目录设置为节点 0 的本地归档目录,将节点 0 的本地归档日志文件作为自己的远程归档日志文件。下图展示了一个共享本地归档的远程归档的双向配置示意图。
DMDSC 集群中,各个节点配置一个远程归档为其他节点的本地归档,通过这种共享本地归档的方式,可以在任意一个节点上,访问到 DMDSC 集群所有节点产生的、完整的归档日志文件。若节点出现故障,故障恢复后,因为该节点配置的远程归档为其他节点的本地归档,该节点的远程归档内容仍然是完整的,因此无需进行手动修复。
16.2.2 远程归档配置方法
与其他归档类型一样,远程归档也是配置在 dmarch.ini 文件中,远程归档相关的主要几个配置项包括:
- ARCH_TYPE 设置为 REMOTE,表示是远程归档;
- ARCH_DEST 设置为远程数据库实例名;
- ARCH_INCOMING_PATH 设置为远程数据库实例的本地归档日志文件存放路径。
16.2.3 DMDSC 归档配置方法
一般建议 DMDSC 集群中的节点,除了配置本地归档之外,再双向配置集群中所有其他节点的远程归档。查询 v$dm_arch_ini、v$arch_status 等动态视图可以获取归档配置以及归档状态等相关信息。
下面以两节点 DMDSC 集群为例,说明如何配置远程归档,DSC0 和 DSC1 是 DMDSC 集群中的两个实例,双向配置共享本地归档的 REMOTE 归档:
DSC0 实例的 DMARCH.INI 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH =+DMDATA/DSC1/arch
DSC1 实例的 DMARCH.INI 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH =+DMDATA/DSC0/arch
注意远程归档指定的本地归档目录必须和真实的本地归档路径完全一致,否则服务器启动过程中校验失败。
16.3 DMDSC 备份集
备份集除了保存备份对象的数据(数据页和归档日志),还记录了备份库节点的描述信息。单节点库生成的备份集,可以认为是只包含一个节点的特殊备份集。与节点相关的描述信息主要包括:
- DMDSC 库的节点数,单节点库为 1
- 备份开始时 DMDSC 节点的状态,以及各节点 REDO 日志的起始 LSN 和 SEQ
- 备份结束时 DMDSC 节点 REDO 日志的结束 LSN 和 SEQ
- 备份集中记录了执行备份节点的 dm.ini 配置参数,还原时若指定了 REUSE DMINI,可使用备份集中的参数值覆盖目标库节点的 dm.ini 文件
备份操作可以在 DMDSC 集群的任意节点执行,生成的备份集可以存放在本地磁盘上,也可以存放到共享存储的 DMASM 目录中。但考虑到数据安全性,一般建议将备份集保存在本地磁盘上。可以通过以下方式,将备份集生成到本地磁盘:
- 使用 dminit 初始化库时,将默认备份目录 bak_path 设置为本地磁盘
- 修改 DMDSC 集群中所有节点的 dm.ini 配置文件,将 bak_path 设置为本地磁盘
- 执行备份时,手动指定备份集路径为本地磁盘
16.4 非镜像环境下备份还原实例
下面以从归档恢复为例说明 2 节点(DSC0、DSC1)DMDSC 环境下的备份恢复:
- 搭建 DMDSC 环境,每个节点都需要双向配置共享本地归档的远程归档。归档配置示例如下:
DSC0 实例的 dmarch.ini 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH =+DMDATA/DSC1/arch
DSC1 实例的 dmarch.ini 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMDATA/DSC0/arch
- 启动 DIsql,联机备份数据库。备份其中任意一个节点即可备份整个 DMDSC 环境。
SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_dsc';
- 还原数据库。还原数据库之前可选择对备份文件进行校验。需要注意的是,待还原的目标库可以是单机库,也可以是 DMDSC 库,且节点个数允许不同。
RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_dsc';
- 恢复数据库。DMDSC 库恢复要求各节点归档完整性由用户保证,即各节点的本地归档都能够访问到。若本地归档配置在 ASM 共享存储上,RMAN 工具启动时,需要指定 DCR_INI 参数。
./dmrman dcr_ini=/dmdata/dameng/dmdcr.ini
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR '+DMDATA/DSC0/arch','+DMDATA/DSC1/arch';
- 数据库更新
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC
16.5 镜像环境下备份还原实例
16.5.1 配置文件说明
为了支持从老版本非镜像库备份还原至镜像版本库。首先,对老版本库备份操作完成后,需要使用新版 dmrman 工具导出备份集映射文件(mappedfile),然后在映射文件中指定配置参数镜像数(data_mirror)与条带化类型(data_striping),其他参数无需改动;还原时以通过指定映射文件方式进行还原恢复。
下表对备份集映射文件中的配置参数进行说明。除了 data_path 之外,mappedfile 中其他参数值均来自于备份源库。data_path 参数值由 DUMP 命令(DATABASE '<ini_path>' 或 TO '<system_dir>'指定)决定,如果未指定 DUMP 命令,则 data_path 参数值也来自于备份源库。更多的备份集映射文件说明请参考《DM8 备份与还原》。
参数 | 含义 |
---|---|
fil_id | 文件 ID |
ts_id | 表空间 ID |
ts_name | 表空间名 |
data_path | 表空间路径 |
mirror_path | DMASM 镜像环境专用。表示表空间创建时指定的数据文件镜像路径,和 ASM 文件镜像无关 |
data_mirror | DMASM 镜像环境专用。表示镜像类型。SYSTEM/MAIN/ROLL 表空间数据文件副本数,取值 1、2 或 3;缺省为 3。在单机或非镜像环境中,data_mirror 为 1 |
data_striping | DMASM 镜像环境专用。表示条带化类型。数据文件条带化粒度,取值 0、32、64、128、256。缺省为 32。单位 KB。在单机或非镜像环境中,data_striping 为 0 |
16.5.2 备份还原
镜像环境与非镜像环境下的备份还原过程一致,参考 16.4 DMDSC 备份还原实例的备份文件。
1)生成备份集后需要使用新版 dmrman 工具导出备份集映射文件,映射文件内容参考 16.5.1 配置文件说明。
RMAN> DUMP BACKUPSET '/home/dm_bak/db_full_bak_for_dsc' DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' MAPPED FILE '/opt/dmdbms/data/map_file_01.txt';
导出的 map_file_01.txt,老版本非镜像库中 data_mirror=1 与 data_striping=0。如下所示:
/**************************************************************/
/*** Delete the unnecessary modified groups **/
/*** Modify the data_path or mirror_path only in one group **/
/**************************************************************/
/**=============================================================**/
/*[DAMENG_SYSTEM_FIL_0]*/
fil_id = 0
ts_id = 0
ts_name = "SYSTEM"
data_path = /opt/dmdbms/data/DAMENG_FOR_RESTORE/SYSTEM.DBF
mirror_path =
data_mirror = 1
data_striping = 0
/**=============================================================**/
/*[DAMENG_ROLL_FIL_0]*/
fil_id = 0
ts_id = 1
ts_name = "ROLL"
data_path = /opt/dmdbms/data/DAMENG_FOR_RESTORE/ROLL.DBF
mirror_path =
data_mirror = 1
data_striping = 0
/**=============================================================**/
/*[DAMENG_MAIN_FIL_0]*/
fil_id = 0
ts_id = 4
ts_name = "MAIN"
data_path =/opt/dmdbms/data/DAMENG_FOR_RESTORE/MAIN.DBF
mirror_path =
data_mirror = 1
data_striping = 0
/**=============================================================**/
/*[DAMENG_RLOG_FIL_4]*/
ts_id = 2
ts_name = "RLOG"
data_path =
data_mirror = 1
data_striping = 0
/***************************** END ****************************/
2)手动修改映射文件中的镜像和条带化类型参数(data_mirror 和 data_striping)。例如,修改为 data_mirror=2 和 data_striping=64。
修改后的 map_file_01.txt 如下:
/**************************************************************/
/*** Delete the unnecessary modified groups **/
/*** Modify the data_path or mirror_path only in one group **/
/**************************************************************/
/**=============================================================**/
/*[DAMENG_SYSTEM_FIL_0]*/
fil_id = 0
ts_id = 0
ts_name = "SYSTEM"
data_path = /opt/dmdbms/data/DAMENG_FOR_RESTORE/SYSTEM.DBF
mirror_path =
data_mirror = 2
data_striping = 64
/**=============================================================**/
/*[DAMENG_ROLL_FIL_0]*/
fil_id = 0
ts_id = 1
ts_name = "ROLL"
data_path = /opt/dmdbms/data/DAMENG_FOR_RESTORE/ROLL.DBF
mirror_path =
data_mirror = 2
data_striping = 64
/**=============================================================**/
/*[DAMENG_MAIN_FIL_0]*/
fil_id = 0
ts_id = 4
ts_name = "MAIN"
data_path =/opt/dmdbms/data/DAMENG_FOR_RESTORE/MAIN.DBF
mirror_path =
data_mirror = 1
data_striping = 0
/**=============================================================**/
/*[DAMENG_RLOG_FIL_4]*/
ts_id = 2
ts_name = "RLOG"
data_path =
data_mirror = 2
data_striping = 64
/***************************** END ****************************/
3)指定映射文件方式进行还原数据库。
RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_dsc' MAPPED FILE '/opt/dmdbms/data/map_file_01.txt';
4)恢复数据库。
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_dsc';
5)数据库更新。
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;
16.6 使用说明
- 配置远程归档时,必须同时配置本地归档;
- DMDSC 集群环境中,备份还原涉及到的 trace 文件路径、DUMP 命令的映射文件路径、SHOW 命令的备份集信息输出文件路径都不支持 DMASM 类型文件;
- 由于 DMDSC 集群中,各个节点可能存在 LSN 值相同的 REDO 日志,恢复过程中无法严格校验归档日志的完整性;因此,需要用户保证全局归档日志的完整性;
- 如果由于节点故障等原因,导致归档日志不完整,则需要使用 DMRMAN 工具进行归档修复;
- 在恢复过程中创建的数据文件,优先使用原始路径创建,如果创建失败,则会在 system_path 目录下创建。因此,在恢复结束后,需要检查一下是否有数据文件创建在本地磁盘上,如果有则需要用户手动执行 SQL,将这些文件重新存放到共享存储、或者 DMASM 文件系统中,确保数据文件可以被 DMDSC 集群中的所有节点访问;
- 归档日志是恢复数据库的关键,建议将归档文件与数据文件分别保存到不同的磁盘上,防止归档文件和数据文件同时损坏,以降低数据无法修复的风险;
- 如果需要访问 DMASM 文件系统,DMRMAN 必须设置 DCR_INI 参数,指定 DCR 的访问配置;
- 还原操作指定 REUSE DMINI 选项时,会将备份集中的 dm.ini 参数更新还原节点上的 dm.ini 配置文件,DMDSC 集群中其他节点的 dm.ini 并不会更新,需要用户手动修改;
- 若 INI 参数 DSC_TRX_CMT_LSN_SYNC 为零,事务提交时不同步 LSN,此时对于不同 DSC 节点无关联的事务,在还原恢复时日志重演顺序不保证和事务提交顺序相同。非完全恢复时(恢复到指定 LSN 或时间,或者缺失最新归档),数据库未恢复到最新状态,可能存在后提交的事务已重演完成,先提交的事务仍未重演的情况。