DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,推出的新一代自研数据库。DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。
本章节介绍使用联机拷贝数据库进行还原恢复的方式,主要内容包括:
- 概述
- 约束和限制
- 拷贝文件
- 修改文件路径参数
- 还原恢复
- 高级主题
概述
使用备份集进行还原恢复,在还原阶段,通过重建数据文件、联机日志文件以及更新控制文件等操作重建了目标库的文件结构,并在恢复阶段重做日志将目标库恢复到最新状态。理论上,拷贝源库得到的一个副本,相当于目标从备份集还原后的状态,利用归档日志应该能将该副本恢复到最新状态,以下章节将对该还原恢复方式进行介绍。
约束与限制
-
调用SP_BACKUP_COPY_BEGIN前需设置当前连接AUTO_COMMIT为FALSE,关闭事务自动提交。
-
SP_BACKUP_COPY_BEGIN和SP_BACKUP_COPY_END必须在同一连接中执行。
-
每次调用SP_BACKUP_COPY_END前必须先调用SP_BACKUP_COPY_BEGIN,否则将报错。
-
调用SP_BACKUP_COPY_BEGIN和SP_BACKUP_COPY_END之间不能执行CREATE TABLESPACE操作。
拷贝文件
联机拷贝数据库,主要包含三个步骤:
1.拷贝开始前,记录系统各节点BEGIN_LSN/BEGIN_SEQ信息,以确定恢复阶段日志重做的起点。
开始拷贝前,调用系统过程SP_BACKUP_COPY_BEGIN记录当前系统BEGIN_LSN/BEGIN_SEQ信息。
SQL>SP_BACKUP_COPY_BEGIN(); |
2.开始拷贝数据库,使用常规方式拷贝数据库文件到新的目录。
拷贝数据库文件到备份目录,拷贝数据库文件时,必须包含配置文件(dm.ini)、控制文件(dm.ctl)、秘钥文件(dm_service.prikey)、联机日志文件(DAMENG01.log和DAMENG02.log)以及数据文件(*.DBF)。
cp /home/dm/DB_FOR_COPY/DAMENG/dm.ini /home/dm/DB_COPY/ cp /home/dm/DB_FOR_COPY/DAMENG/dm.ctl /home/dm/DB_COPY/ cp /home/dm/DB_FOR_COPY/DAMENG/dm_service.prikey /home/dm/DB_COPY/ cp /home/dm/DB_FOR_COPY/DAMENG/DAMENG01.log /home/dm/DB_COPY/ cp /home/dm/DB_FOR_COPY/DAMENG/DAMENG02.log /home/dm/DB_COPY/ cp /home/dm/DB_FOR_COPY/DAMENG/*.DBF /home/dm/DB_COPY/ |
3.拷贝结束后,调用系统过程SP_BACKUP_COPY_END,记录系统各节点END_LSN/END_SEQ信息,以在恢复结束后校验数据完整性。该过程同时生成一个仅包含meta文件的空备份集,并将记录的信息填充到该文件。
SP_BACKUP_COPY_END(path varchar)中path参数指定备份集绝对路径,当参数为相对路径时,将在默认备份目录下生成该备份集。
SQL>SP_BACKUP_COPY_END('/home/dm/bak/BAKSET_COPY'); |
注意联机拷贝数据库前必须已经配置了归档,否则调用SP_BACKUP_COPY_END将报错;该过程产生的空备份集只能用于源库副本的还原,当利用该备份集还原其他库或从该备份集进行恢复时将报错。
修改文件路径参数
当源库的一个副本拷贝到不同的路径后,在还原恢复前需要修改文件中全部的路径参数。
例如,修改dm.ini文件中参数CTL_PATH的路径。
拷贝前: CTL_PATH = /home/dm/DB_FOR_COPY/DAMENG/dm.ctl ##ctl file path 拷贝后,修改为: CTL_PATH = /home/dm/DB_COPY/dm.ctl ##ctl file path |
其他路径参数的修改方法类似。控制文件中路径参数修改方法比较特殊,控制文件修改之前需要先从ctl文件转换为txt文件,修改之后,再转为ctl文件。
例如,修改dm.ctl文件中的路径参数步骤如下:
首先,将dm.ctl文件转为文本文件dmctl.txt。
dmctlcvt TYPE=1 SRC=/home/dm/DB_COPY/dm.ctl DEST=/home/dm/DB_COPY/dmctl.txt |
其次,修改dmctl.txt中的路径参数。将原始路径修改为拷贝副本所在的路径。
拷贝前: ## file path fil_path=/home/dm/DB_FOR_COPY/DAMENG/SYSTEM.DBF 拷贝后,修改为: ## file path fil_path=/home/dm/DB_COPY/SYSTEM.DBF |
最后,将修改完成后的dmctl.txt转为二进制文件dm.ctl,并替换原始dm.ctl文件。
dmctlcvt TYPE=2 SRC=/home/dm/DB_COPY/dmctl.txt DEST=/home/dm/DB_COPY/dm.ctl |
还原恢复
从源库的副本进行还原恢复,语法与脱机库还原恢复完全一致。
从源库的副本进行还原恢复主要包含以下步骤:
1.启动DMRMAN,利用空备份集还原源库的副本;
RMAN>RESTORE DATABASE '/home/dm/DB_COPY/dm.ini' FROM BACKUPSET '/home/dm/bak/BAKSET_COPY'; |
2.利用源库的归档日志将副本恢复到最新状态;
RMAN>RECOVER DATABASE '/home/dm/DB_COPY/dm.ini' WITH ARCHIVEDIR '/home/dm/DB_FOR_COPY/DAMENG/arch'; |
3.恢复成功后更新副本DB_MAGIC。
RMAN>RECOVER DATABASE '/home/dm/DB_COPY/dm.ini' UPDATE DB_MAGIC; |
高级主题
DSC环境下,联机拷贝进行还原恢复的操作流程与单机环境基本相同,只在某些操作上略有差别,下面以使用模拟共享磁盘搭建的两节点DSC为例进行介绍,主要内容包括:
- 拷贝文件
- 修改文件路径参数
- 还原恢复
拷贝文件
开始拷贝前,调用系统过程SP_BAKCUP_COPY_BEGIN,与单机环境相同,可连接任意节点执行。
SQL>SP_BACKUP_COPY_BEGIN(); |
拷贝文件时,由于DSC环境数据文件通过DMASM管理并存储在共享磁盘上,因此需拷贝所有ASM磁盘文件(*.asm)、DMASM配置文件(dmasvrmal.ini、dmdcr_cfg.ini以及dmdcr.ini)以及各节点配置文件(dm.ini)和MAL配置文件(dmmal.ini)。
cp /home/dm/DSC_FOR_COPY/asmdisks/*.asm /home/dm/DSC_COPY/asmdisks/ cp /home/dm/DSC_FOR_COPY/dmdcr_cfg.ini /home/dm/DSC_COPY/ cp /home/dm/DSC_FOR_COPY/dmasvrmal.ini /home/dm/DSC_COPY/ cp /home/dm/DSC_FOR_COPY/dsc0/dmdcr.ini /home/dm/DSC_COPY/dsc0/ cp /home/dm/DSC_FOR_COPY/dsc1/dmdcr.ini /home/dm/DSC_COPY/dsc1/ cp /home/dm/DSC_FOR_COPY/dsc0/dm.ini /home/dm/DSC_COPY/dsc0/ cp /home/dm/DSC_FOR_COPY/dsc1/dm.ini /home/dm/DSC_COPY/dsc1/ cp /home/dm/DSC_FOR_COPY/dsc0/dmmal.ini /home/dm/DSC_COPY/dsc0/ cp /home/dm/DSC_FOR_COPY/dsc1/dmmal.ini /home/dm/DSC_COPY/dsc1/ |
拷贝结束后,调用系统过程SP_BACKUP_COPY_END生成空备份集,这一步与单节点相同,可在任意节点执行。
SQL>SP_BACKUP_COPY_END('/home/dm/bak/BAKSET_DSC_COPY'); |
修改文件路径参数
当共享磁盘文件拷贝到不同的目录后,需修改相关路径参数。
1.修改dmdcr_cfg.ini中的路径参数DCR_VTD_PATH和DCR_EP_ASM_LOAD_PATH。以DCR_VTD_PATH为例进行说明。
拷贝前: DCR_VTD_PATH = /home/dm/DSC_FOR_COPY/asmdisks/votedisk.asm 拷贝后,修改为: DCR_VTD_PATH = /home/dm/DSC_COPY/asmdisks/votedisk.asm |
dmdcr_cfg.ini修改后,需利用dmasmcmd工具重新初始化DMASM磁盘,其中dmasmcmd工具存放在DM安装目录的bin目录下。
ASM>INIT DCRDISK '/home/dm/DSC_COPY/asmdisks/dcrdisk.asm' FROM '/home/dm/DSC_COPY/dmdcr_cfg.ini' IDENTIFIED BY 'password' |
其中,dcrdisk.asm为拷贝前被初始化为DCR磁盘的裸设备文件,参数IDENTIFIED BY设置登录DMASM文件系统的密码。
2.修改dmdcr.ini文件中的路径参数DMDCR_PATH、DMDCR_MAL_PATH、DMDCR_ASM_STARTUP_CMD和DMDCR_DB_STARTUP_CMD。
以0号节点为例,修改DMDCR_DB_STARTUP_CMD参数。
拷贝前: DMDCR_DB_STARTUP_CMD = /dm/bin/dmserver path=/home/dm/DSC_FOR_COPY/dsc0/dm.ini dcr_ini=/home/dm/DSC_FOR_COPY/dsc0/dmdcr.ini 拷贝后,修改为: DMDCR_DB_STARTUP_CMD = /dm/bin/dmserver path=/home/dm/DSC_COPY/dsc0/dm.ini dcr_ini=/home/dm/DSC_COPY/dsc0/dmdcr.ini |
3.修改dm.ini文件中的路径参数CONFIG_PATH。dm.ini中的ASM路径参数不需要修改。
以0号节点为例,修改CONFIG_PATH参数。
拷贝前: CONFIG_PATH = /home/dm/DSC_FOR_COPY/dsc0 ##config path 拷贝后,修改为: CONFIG_PATH = /home/dm/DSC_COPY/dsc0 ##config path |
4.修改dmdcr_cfg.ini、dmasvrmal.ini以及dmmal.ini文件中的IP参数。以dmdcr_cfg.ini中的DCR_EP_HOST参数为例。
拷贝前: DCR_EP_HOST = 192.168.0.111 拷贝后,修改为: DCR_EP_HOST = 192.168.0.222 |
总结:作为国产数据库中的领军者,达梦数据库为用户提供了大量可视化界面及各种丰富多样的功能,作为数据库DBA的我们,可以提前接触了解,为以后顺应全栈国产化的过程做准备。