备份还原

DMDSC集群备份还原的功能、语法与单节点数据库基本保持一致,本章主要介绍DMDSC集群与单节点数据库备份、还原的使用方法差异,并说明在DMDSC集群中执行备份还原的一些注意事项。关于备份还原更详细的说明,请参考《DM8备份与还原》手册。

15.1 DMDSC和单节点差异

达梦数据库中,备份还原的对象包括:表、表空间和数据库。表备份还原的操作对象是数据页,而数据页是通过BUFFER获取的,与存储无关,因此DMDSC集群的表备份还原与单节点没有任何区别。表空间备份只需要访问属于这个表空间的数据文件,并不需要备份归档日志,因此DMDSC集群的表空间备份与单节点没有任何区别。表空间还原要求将表空间数据恢复到最新状态,需要重做归档日志,但DMDSC集群中本地归档往往是保存在本地磁盘中的,因此如何访问其他节点生成的归档日志,是DMDSC集群需要解决的问题。

数据库备份也需要访问所有节点的本地归档日志文件,同样需要解决如何访问其他节点的归档日志问题;另外,与单节点不同的是,DMDSC集群备份过程中还需要记录备份开始和结束时各个节点的LSN信息,LSN信息需要在节点间进行传递。数据库还原的过程就是从备份集中读取数据页并重新写入数据库文件中,而DMDSC集群的数据库文件是保存在共享存储中的,因此不要特别处理。但是,数据库的恢复操作有可能需要访问本地归档日志文件,因此也需要解决如何访问其他节点归档日志问题。

虽然可以将本地归档(LOCAL ARCHIVE)保存到共享存储中,解决其他节点归档日志问题,但是出于数据安全性和成本的考虑,一般建议将数据库备份文件和本地归档日志文件保存在本地磁盘中,避免由于共享存储的损坏,导致所有数据丢失、无法恢复的风险。而拷贝远程节点归档日志文件,到备份还原执行节点的做法,不但操作繁琐,而且在归档日志量比较大的情况,执行效率也存在很大问题。为了简化操作步骤,降低数据丢失风险,达梦数据库提供了远程归档(REMOTE ARCHIVE)功能,解决了DMDSC集群备份还原过程中访问其他节点归档日志文件问题。

配置远程归档后,DMDSC集群中各个节点接收其他节点发送的REDO日志,并保存在节点的本地目录后,DMDSC集群备份恢复的使用方法与单节点基本保持一致。

15.2 远程归档

15.2.1 简介

远程归档专门用于DMDSC环境中。

所谓远程归档(REMOTE ARCHIVE),顾名思义就是将归档目录配置在远程节点上。远程归档采用双向配置的方式,双向配置远程归档就是两个节点将自己的远程归档相互配置在对方机器上。集群中所有的节点,都拥有一套包括所有节点的,完整的归档日志文件。

具体有两种配置方式:一是共享本地归档的远程归档,即将远程归档目录配置为另一节点的本地归档目录,以此来共享它的本地归档日志文件;二是通过MAL发送的远程归档,即将写入本地归档的REDO日志信息,通过MAL发送到远程节点,并写入远程节点的指定归档目录中,形成远程归档日志文件

注意

远程归档必须双向配置。否则,单向配置后远程归档会处于无效状态。

远程归档与本地归档的主要区别是REDO日志写入的位置不同,本地归档将REDO日志写入数据库实例所在节点的磁盘,而远程归档则将REDO日志写入到其他数据库实例所在节点的指定归档目录。

通过MAL发送的远程归档与本地归档的另外一个区别就是归档失败的处理策略不同:本地归档写入失败(比如磁盘空间不足),系统将会挂起;而远程归档失败则会直接将远程归档失效,不再发送REDO日志到指定数据库实例。当节点间网络恢复、或者远程节点重启成功后,系统会自动检测并恢复远程归档,继续发送新写入的REDO日志,但不会主动补齐故障期间的REDO日志。因此,在出现节点故障等情况下,通过MAL发送的远程归档的内容有可能是不完整的,而本地归档的内容肯定是完整的;如果备份还原恰好需要用到这段丢失的远程归档日志,那么可以从源端的本地归档拷贝、补齐这部分内容。而共享本地归档的远程归档,其本质就是本地归档,因而不存在远程归档日志丢失的问题,加上共享本地归档精省去了MAL发送的过程,因此更加可靠高效。综上所述,DM推荐用户使用共享本地归档的远程归档。

15.2.1.1 共享本地归档的远程归档

共享本地归档的远程归档就是双向配置的两个节点都不再发送REDO日志到对方机器上生成远程归档日志文件,而是将对方的本地归档作为自己的远程归档。例如,节点0的本地归档配置在ASM共享存储或其他共享磁盘上。节点1可以通过将自己的远程归档目录设置为节点0的本地归档目录,将节点0的本地归档日志文件作为自己的远程归档日志文件。图15.1展示了一个共享本地归档的远程归档的双向配置示意图。

共享本地归档的远程归档

图15.1 共享本地归档的远程归档

DMDSC集群中,各个节点配置一个远程归档为其他节点的本地归档,通过这种共享本地归档的方式,可以在任意一个节点上,访问到DMDSC集群所有节点产生的、完整的归档日志文件。若节点出现故障,故障恢复后,因为该节点配置的远程归档为其他节点的本地归档,该节点的远程归档内容仍然是完整的,因此无需进行手动修复。

15.2.1.2 通过MAL发送的远程归档

通过MAL发送的远程归档就是将写入本地归档的REDO日志信息,发送到远程节点,并写入远程节点的指定归档目录中。远程归档的触发时机是,在REDO日志写入本地归档日志文件的同时,将REDO日志通过MAL系统发送给指定的数据库实例。

DMDSC集群中,如果各个节点在配置本地归档之外,再双向配置一个远程归档,那么就可以在任意一个节点的本地磁盘中,找到一套DMDSC集群所有节点产生的、完整的归档日志文件。图15.2展示了一个通过MAL发送的远程归档的双向配置示意图。

通过MAL发送的远程归档

图15.2 通过MAL发送的远程归档

若节点出现故障,故障恢复后,因为该节点配置的通过MAL发送的远程归档,该节点的远程归档内容可能不完整,可能缺少故障期间的REDO日志,因此需要进行手动修复。

15.2.2 远程归档配置方法

与其他归档类型一样,远程归档也是配置在dmarch.ini文件中,远程归档相关的主要几个配置项包括:

  1. ARCH_TYPE设置为REMOTE,表示是远程归档;
  2. ARCH_DEST设置为远程数据库实例名,表示REDO日志发送到这个节点;
  3. ARCH_INCOMING_PATH设置为本地存储路径,用于保存ARCH_DEST实例发送的REDO日志;
  4. 若配置共享本地归档的远程归档,还需要在dmarch.ini中配置全局参数ARCH_LOCAL_SHARE = 1。其他方式,不需要设置此参数。

15.2.3 DMDSC归档配置方法

一般建议DMDSC集群中的节点,除了配置本地归档之外,再双向配置集群中所有其他节点的远程归档。查询v​dm_arch_ini、varch_status等动态视图可以获取归档配置以及归档状态等相关信息。

下面以两节点DMDSC集群为例,说明如何配置远程归档,DSC0和DSC1是DMDSC集群中的两个实例,双向配置共享本地归档的REMOTE归档:

DSC0实例的dmarch.ini配置:

ARCH_LOCAL_SHARE    = 1

[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

  ARCH_FILE_SIZE   = 128

  ARCH_SPACE_LIMIT  = 0

DSC1实例的dmarch.ini配置:

ARCH_LOCAL_SHARE    = 1

[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

  ARCH_FILE_SIZE   = 128

  ARCH_SPACE_LIMIT  = 0
注意

配置共享本地归档的远程归档时,远程归档指定的本地归档目录必须和真实的本地归档路径完全一致,否则服务器启动过程中校验失败。

15.3 DMDSC备份集

备份集除了保存备份对象的数据(数据页和归档日志),还记录了备份库节点的描述信息。单节点库生成的备份集,可以认为是只包含一个节点的特殊备份集。与节点相关的描述信息主要包括:

  1. DMDSC库的节点数,单节点库为1
  2. 备份开始时DMDSC节点的状态,以及各节点REDO日志的起始LSN和SEQ
  3. 备份结束时DMDSC节点REDO日志的结束LSN和SEQ
  4. 备份集中记录了执行备份节点的dm.ini配置参数,还原时使用备份集中的参数值覆盖目标库节点的dm.ini文件

备份操作可以在DMDSC集群的任意节点执行,生成的备份集可以存放在本地磁盘上,也可以存放到共享存储的DMASM目录中。但考虑到数据安全性,一般建议将备份集保存在本地磁盘上。可以通过以下方式,将备份集生成到本地磁盘:

  1. 使用dminit初始化库时,将默认备份目录bak_path设置为本地磁盘
  2. 修改DMDSC集群中所有节点的dm.ini配置文件,将bak_path设置为本地磁盘
  3. 执行备份时,手动指定备份集路径为本地磁盘

15.4 DMDSC备份还原实例

下面以从归档恢复为例说明2节点(DSC0、DSC1)DMDSC环境下的备份恢复:

  1. 搭建DMDSC环境,每个节点都需要双向配置共享本地归档的远程归档。归档配置示例如下:

DSC0实例的dmarch.ini配置:

ARCH_LOCAL_SHARE		= 1
[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
	ARCH_FILE_SIZE	    = 128
	ARCH_SPACE_LIMIT	= 0

DSC1实例的dmarch.ini配置:

ARCH_LOCAL_SHARE		= 1
[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
	ARCH_FILE_SIZE		= 128
	ARCH_SPACE_LIMIT	= 0
  1. 启动DIsql,联机备份数据库。备份其中任意一个节点即可备份整个DMDSC环境。
SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_dsc';
  1. 还原数据库。还原数据库之前可选择对备份文件进行校验。需要注意的是,待还原的目标库可以是单机库,也可以是DMDSC库,且节点个数允许不同。
RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_dsc';
  1. 恢复数据库。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';
  1. 数据库更新
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC

15.5 使用说明

  1. 配置远程归档时,必须同时配置本地归档;
  2. DMDSC集群环境中,备份还原涉及到的trace文件路径、DUMP命令的映射文件路径、SHOW命令的备份集信息输出文件路径都不支持DMASM类型文件;
  3. 由于DMDSC集群中,各个节点可能存在LSN值相同的REDO日志,恢复过程中无法严格校验归档日志的完整性;因此,需要用户保证全局归档日志的完整性;
  4. 在恢复过程中创建的数据文件,优先使用原始路径创建,如果创建失败,则会在system_path目录下创建。因此,在恢复结束后,需要检查一下是否有数据文件创建在本地磁盘上,如果有则需要用户手动执行SQL,将这些文件重新存放到共享存储、或者DMASM文件系统中,确保数据文件可以被DMDSC集群中的所有节点访问;
  5. 归档日志是恢复数据库的关键,建议将归档文件与数据库文件分别保存到不同的物理磁盘上,防止归档文件和数据文件同时损坏,以降低数据无法修复的风险;
  6. 如果需要访问DMASM文件系统,DMRMAN必须设置DCR_INI参数,指定DCR的访问配置;
  7. 数据库恢复过程中,需要保证本地归档和远程归档的完整性。如果由于节点故障等原因,导致远程归档不完整,则需要使用DMRMAN工具在对应节点修复本地归档后,将修复后本地归档拷贝过来,再进行恢复;
  8. 还原操作指定REUSE DMINI选项时,会将备份集中的dm.ini参数更新还原节点上的dm.ini配置文件,DMDSC集群中其他节点的dm.ini并不会更新,需要用户手动修改。
微信扫码
分享文档
扫一扫
联系客服