达梦DSC各种方式备份还原

DMDSC数据库备份还原实施

目录
一、 数据库备份还原说明 3
二、 联机数据备份 3

  1. 全库备份 4
  2. 表空间备份 4
  3. 表备份 5
    三、 DMRMAN脱机备份 5
    四、 DMRMAN还原 5
  4. 数据库还原恢复 6
  5. 表空间还原 6
  6. 指定时间点或者LSN还原 7

一、数据库备份还原说明

备份操作可以在 DMDSC 集群的任意节点执行,生成的备份集可以存放在本地磁盘上,也可以存放到共享存储的 DMASM 目录中。但考虑到数据安全性,一般建议将备份集保存在本地磁盘上。
需要启动数据库的DMAP服务,并且要求DMAP服务和数据库服务以及启动dmrman的用户相同。启动命令:
su dmdba
cd /home/dmdba/dmdbms/bin
./DmAPService start

以下举例操作的步骤按照下列目录结构:
数据库安装目录在/home/dmdba/dmdbms下
数据库备份文件存放目录/home/dmdba/dmdbms/BAK/
二、联机数据备份
在联机情况下,DSC集群环境支持库备份、表空间备份、表备份,并且要求DSC环境的所有节点都处于open状态。
要求配置本地归档以及远程归档,配置方式如下:
DSC0 实例的 dmarch.ini 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/arch_0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 40960
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH =/home/dmdba/dmdbms/arch_0_remote
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 40960

DSC1 实例的 dmarch.ini 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/arch_1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 40960
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH =/home/dmdba/dmdbms/arch_1_remote
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 40960

1.全库备份
联机备份数据库,备份其中任意一个节点即可备份整个 DMDSC 环境。
执行联机全库备份
su dmdba
cd /home/dmdba/dmdbms/bin
启动 DIsql
./disql SYSDBA/SYSDBA:5236
SQL>BACKUP DATABASE BACKUPSET ‘/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc’;
达梦DSC各种方式备份还原

2.增量备份
执行联机增量备份
su dmdba
cd /home/dmdba/dmdbms/bin
启动 DIsql
./disql SYSDBA/SYSDBA:5236
SQL>BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dmdba/dmdbms/BAK’BACKUPSET
‘/home/dmdba/dmdbms/BAK/db_increment_bak_02’;
达梦DSC各种方式备份还原

3.表空间备份
因为表空间备份只需要访问本表空间的数据文件,所以Dsc集群的表空间备份和单机的表空间备份操作相同。
执行联机表空间备份
切换到dmdba用户,登录到其中任意一个控制节点做备份
su dmdba
cd /home/dmdba/dmdbms/bin
启动 DIsql
./disql SYSDBA/SYSDBA:5236
SQL>BACKUP TABLESPACE MAIN BACKUPSET ‘/home/dmdba/dmdbms/BAK/ts_bak_01’;
达梦DSC各种方式备份还原

4.表备份

执行联机表备份
su dmdba
cd /home/dmdba/dmdbms/bin
启动 DIsql
./disql SYSDBA/SYSDBA:5236
SQL>BACKUP TABLE TAB_01 BACKUPSET ‘/home/dmdba/dmdbms/BAK/tab_bak_01’;
达梦DSC各种方式备份还原

三、DMRMAN脱机备份
对于DSC集群环境,脱机备份只支持全库备份,备份语句如下:
执行脱机全库备份
–保证集群服务已经停止,只停止dmserver即可
达梦DSC各种方式备份还原

su dmdba
cd /home/dmdba/dmdbms/bin
–启动dmrman工具,并指定dmdcr配置文件的路径(asm必须启动状态才可以)
./dmrman DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini
RMAN>BACKUP DATABASE
‘/opt/dmdbms/data/DAMENG/dm.ini’ FULL BACKUPSET
‘/home/dm_bak/db_full_bak_01’;
达梦DSC各种方式备份还原

四、数据还原恢复
还原过程中,目标库可以是新初始化的库,也可以是已经存在的库,可以是DSC集群,也可以是单节点。

1.数据库还原恢复
1.1.还原到DSC环境
执行全库的还原恢复直接还原到DSC环境中
1)保证即将被还原的集群dmserver服务已经停止
达梦DSC各种方式备份还原

su dmdba
cd /home/dmdba/dmdbms/bin
./dmrman DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
达梦DSC各种方式备份还原

2)校验备份,校验待还原备份集的合法性。
RMAN>CHECK BACKUPSET ‘/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc’;
达梦DSC各种方式备份还原

  1. 还原数据库。
    RMAN>RESTORE DATABASE ‘/home/dmdba/dmdbms/config/rac0_config/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc’;
    达梦DSC各种方式备份还原

4)恢复数据库。
RMAN>RECOVER DATABASE ‘/home/dmdba/dmdbms/config/rac0_config/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc’;
达梦DSC各种方式备份还原

5)更新db_magic值
RMAN>RECOVER DATABASE ‘/home/dmdba/dmdbms/config/rac0_config/dm.ini’ update db_magic;
达梦DSC各种方式备份还原

6)启动各个节点的dmserver,验证还原情况
达梦DSC各种方式备份还原
1.2.还原到单机
执行全库的还原恢复还原到新初始化的单机上
1)新初始化单机实例,初始化参数和原DSC集群环境保持一致,查看原DSC环境初始化参数,如下:(到dm.ini参数文件存放目录下查看dminitxxxxx.log日志内容,里面记载初始化参数的相关设置)
达梦DSC各种方式备份还原

2)在新的环境中初始化新的单机实例,如下:
su dmdba
cd /home/dmdba/dmdbms/bin
./dminit path=/home/dmdba/data page_size=16 port_num=5240
达梦DSC各种方式备份还原

2)利用DSC的备份还原新初始化的单机实例库。
su dmdba
cd /home/dmdba/dmdbms/bin
./dmrman
RMAN>CHECK BACKUPSET ‘/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc’;
达梦DSC各种方式备份还原

  1. 还原数据库。
    RMAN>RESTORE DATABASE ‘/home/dmdba/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc’;
    达梦DSC各种方式备份还原

4)恢复数据库。
RMAN>RECOVER DATABASE ‘/home/dmdba/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc’;
达梦DSC各种方式备份还原

5)更新db_magic值
RMAN>RECOVER DATABASE ‘/home/dmdba/data/DAMENG/dm.ini’ update db_magic;
达梦DSC各种方式备份还原

6)启动新初始化的单机实例,验证还原情况
达梦DSC各种方式备份还原
达梦DSC各种方式备份还原

2.表空间还原
执行表空间的还原恢复
1)保证DSC集群的dmserver服务已经停止
达梦DSC各种方式备份还原

su dmdba
cd /home/dmdba/dmdbms/bin
./dmrman DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
达梦DSC各种方式备份还原

2)校验备份,校验待还原备份集的合法性。
RMAN>CHECK BACKUPSET ‘/home/dmdba/dmdbms/BAK/db_full_bak’;
达梦DSC各种方式备份还原

  1. 还原数据库。
    RMAN>RESTORE DATABASE ‘/home/dmdba/dmdbms/config/rac0_config/dm.ini’ TABLESPACE MAIN FROM BACKUPSET ‘/home/dmdba/dmdbms/BAK/db_full_bak’;
    达梦DSC各种方式备份还原

4)恢复表空间。
RMAN>RECOVER DATABASE ‘/home/dmdba/dmdbms/config/rac0_config/dm.ini’ TABLESPACE MAIN;
达梦DSC各种方式备份还原

5)启动各个节点的dmserver,验证还原情况
达梦DSC各种方式备份还原

3.表还原
执行表的联机还原
1)保证DSC集群正常运行,创建测试表TAB_01
达梦DSC各种方式备份还原
达梦DSC各种方式备份还原

2)给TAB_01表创建备份
su dmdba
cd /home/dmdba/dmdbms/bin
启动 DIsql
./disql SYSDBA/SYSDBA:5236
SQL>BACKUP TABLE TAB_01 BACKUPSET ‘/home/dmdba/dmdbms/BAK/tab_bak_01’;
达梦DSC各种方式备份还原

校验备份
SQL>SELECT SF_BAKSET_CHECK(‘DISK’,’/home/dmdba/dmdbms/BAK/tab_bak_01’);
达梦DSC各种方式备份还原

3)模拟误删除TAB_01表中数据
达梦DSC各种方式备份还原

2)还原误删除TAB_01表。
SQL>RESTORE TABLE TAB_01 FROM BACKUPSET ‘/home/dmdba/dmdbms/BAK/tab_bak_01’;
达梦DSC各种方式备份还原

4)查看表中数据量,检验还原情况。
SQL>SELECT * FROM TAB_01;
达梦DSC各种方式备份还原

五、定时备份
1)打开管理工具,使用DSC中任一节点登录管理工具
达梦DSC各种方式备份还原

2)连接之后,右键【创建代理环境】
达梦DSC各种方式备份还原

1.完全备份
1)新建代理环境之后,在【作业】处右键新建作业,如下图:
达梦DSC各种方式备份还原

2)设置作业名称
达梦DSC各种方式备份还原

3)设置作业步骤,点击作业步骤之后,点击【添加】后弹出来的对话框里设置作业步骤的类型,选择【基于备份集备份数据库】,输入备份路径,选择备份方式为【完全备份】
达梦DSC各种方式备份还原

4)设置作业调度,先设置调度1,设置调度为每天的凌晨一点进行
达梦DSC各种方式备份还原

5)设置调度2,调度2设置为每天的下午一点执行
达梦DSC各种方式备份还原
达梦DSC各种方式备份还原

6)点击确定之后,完全备份的定时作业设置完成
2.增量备份
1)新建增量备份,设置作业名称
达梦DSC各种方式备份还原

2)设置作业步骤,添加作业步骤之后,在弹出来的对话框中添加作业步骤,选择步骤类型为【基于备份集备份数据库】,填写备份路径,选择【增量备份】,设置【基备份目录】
达梦DSC各种方式备份还原

3)设置作业调度,设置为每个小时执行一次,在每小时的45分执行
达梦DSC各种方式备份还原
达梦DSC各种方式备份还原

4)设置完成之后,点击【确定】后定时增量备份设置完成

3.定时删除备份
1)新建定时删除1天前备份的定时作业
达梦DSC各种方式备份还原

2)设置作业步骤,选择作业步骤为SQL脚本,然后在脚本语句框中填写上删除语句:
–下面的语句中的【DISK】是固定值,后面的是跟上要删除的备份文件的路径
SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,’/home/dmdba/dmdbms/BAK’);
–下面语句中记录要删除多长时间之前的备份
CALL SP_DB_BAKSET_REMOVE_BATCH(‘DISK’,SYSDATE-1);
达梦DSC各种方式备份还原

3)设置作业调度,因为全量备份是在凌晨1点进行的,增备是在每小时的45分进行的,删除备份的时间设置在2点。
达梦DSC各种方式备份还原
达梦DSC各种方式备份还原

4)点击确定之后,定时删除过期备份的作业设置完成,可以在管理工具左边导航栏的【代理】–【作业】下面看到设置的三个作业:全备、增备、删除。
达梦DSC各种方式备份还原

六、监控
配置dmcssm监控,前台监控集群状态
配置dmcssm.ini文件,可以将文件配置在config目录下,如下:
[[email protected] config]$ cat dmcssm.ini
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 172.16.121.121:9341
CSSM_CSS_IP = 172.16.121.122:9343
CSSM_LOG_PATH =/home/dmdba/dmdbms/config/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[[email protected] config]$

配置完成之后,前台启动观察集群状态
cd /home/dmdba/dmdbms/bin下
[[email protected] bin]$ ./dmcssm ini_path=/home/dmdba/dmdbms/config/dmcssm.ini
[monitor] 2020-11-10 15:33:18: CSS MONITOR V8
[monitor] 2020-11-10 15:33:18: CSS MONITOR SYSTEM IS READY.

[monitor] 2020-11-10 15:33:18: Wait CSS Control Node choosed…
[monitor] 2020-11-10 15:33:19: Wait CSS Control Node choosed succeed.

show

monitor current time:2020-11-10 15:33:26, n_group:3
=================== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 0] ========================================

[CSS0] global info:
[ASM0] auto restart = FALSE
[RAC0] auto restart = FALSE

[CSS1] global info:
[ASM1] auto restart = FALSE
[RAC1] auto restart = FALSE

ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2020-11-10 15:33:25 CSS0 0 9341 Control Node OPEN WORKING OK TRUE 719781662 719786946
2020-11-10 15:33:25 CSS1 1 9343 Normal Node OPEN WORKING OK TRUE 719782973 719788253

=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 0] ========================================

n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2020-11-10 15:33:25 ASM0 0 9349 Control Node OPEN WORKING OK TRUE 719788941 719794195
2020-11-10 15:33:25 ASM1 1 9351 Normal Node OPEN WORKING OK TRUE 719791681 719796925

=================== group[name = GRP_RAC, seq = 2, type = DB, Control Node = 0] ========================================

n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep: css_time inst_name seqno port mode inst_status vtd_status is_ok active guid ts
2020-11-10 15:33:25 RAC0 0 5236 Control Node OPEN WORKING OK TRUE 383768616 383768915
2020-11-10 15:33:25 RAC1 1 5236 Normal Node OPEN WORKING OK TRUE 383769941 383770233

==================================================================================================================

七、问题解决
1.归档修复
如果在脱机备份的时候出现归档不完整备份失败的问题,可以使用repair archivelog方式进行修复归档,如下:
达梦DSC各种方式备份还原