浅谈联机拷贝数据库还原恢复

本文详细介绍了达梦数据库DM8的联机拷贝数据库和恢复过程,包括拷贝开始前的准备、拷贝文件、修改文件路径参数、还原恢复的步骤,以及在DSC环境下进行相同操作的注意事项。该教程旨在帮助DBA更好地管理和维护达梦数据库。
摘要由CSDN通过智能技术生成

        DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,推出的新一代自研数据库。DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。

本章节介绍使用联机拷贝数据库进行还原恢复的方式,主要内容包括:

  • 概述
  • 约束和限制
  • 拷贝文件
  • 修改文件路径参数
  • 还原恢复
  • 高级主题

概述

使用备份集进行还原恢复,在还原阶段,通过重建数据文件、联机日志文件以及更新控制文件等操作重建了目标库的文件结构,并在恢复阶段重做日志将目标库恢复到最新状态。理论上,拷贝源库得到的一个副本,相当于目标从备份集还原后的状态,利用归档日志应该能将该副本恢复到最新状态,以下章节将对该还原恢复方式进行介绍。

约束与限制

  1.  调用SP_BACKUP_COPY_BEGIN前需设置当前连接AUTO_COMMIT为FALSE,关闭事务自动提交。

  2.  SP_BACKUP_COPY_BEGIN和SP_BACKUP_COPY_END必须在同一连接中执行。

  3.  每次调用SP_BACKUP_COPY_END前必须先调用SP_BACKUP_COPY_BEGIN,否则将报错。

  4.  调用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的我们,可以提前接触了解,为以后顺应全栈国产化的过程做准备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值