达梦DMDSC+异步备机部署

讲解

DMDSC+异步备机,就是在原有的DMDSC集群上,为其部署一台备库,但该备库复制数据时,是异步的。

需要先明确一下概念,DMDSC集群,集群里每个数据库服务,都是1个节点。所有数据库服务(所有节点)视为一个DSC集群,它们是一个整体,不管有多少节点。
说通俗点,把这些节点,看成一个数据库服务即可。

其次,DMDSC集群这么多节点,虽然是一个整体,但是会有一个节点,负责控制其他的节点(就像个领头羊),那个节点的名字叫控制节点,其他节点都叫普通节点

控制节点一般都是最早启动的那个服务。控制节点可以控制其他节点一起关闭(正常关闭集群时,只需在控制节点执行关闭命令,所有节点会同时跟它一起关闭,但是开启还得手动一个个开),
同时也具备切换功能,比如控制节点突发意外死亡了,那么其他的普通节点会切换为控制节点。

接下来说DMDSC+异步备机,主库是DMDSC集群(上面说了,不管DSC集群多少个节点,它们是一个整体),备库(异步备机)是一个单实例。
通俗点说,DMDSC集群这一堆节点(数据库服务)都是主库,备库是一个单机实例而已。

环境准备

本文默认搭建好DSC集群了,没搭建的先看此处进行搭建:达梦DMDSC集群部署搭建_dcps75321的博客-CSDN博客
然后准备一台新的linux机器,安装dm8并初始化好一个实例启动即可。

本文使用以下实例名:
DSC0,是dsc的0号节点
DSC1,是dsc的1号节点
DSC_DW,是异步备机 


1、开始部署搭建

【关闭DSC】

关闭DSC所有节点的数据库服务,可直接在控制节点执行
若是后台启动,那就全部手动关闭

注意:若是配置了dmcss自动拉起功能,那么只能关闭整个dsc集群,关闭数据库服务后,再关闭asm,然后关闭css,速度要快一些,以防css自动拉起。关闭操作可查看第11步:达梦DMDSC集群部署搭建_dcps75321的博客-CSDN博客

DSC0节点:

cd /dmdbms/bin
./DmService stop

DSC1节点:

cd /dmdbms/bin
./DmService stop

【DSC集群做备份】

在DSC集群任意节点

查看是否开启map服务 没开则执行以下 

cd /dmdbms/bin
./DmAPService start

启动dmrman

cd /dmdbms/bin
./dmrman use_ap=2 dcr_ini=/dmdbms/config/dmdcr.ini

做备份

RMAN>BACKUP DATABASE '/dmdbms/dmdata/dsc0_config/dm.ini' FULL BACKUPSET 
'/home/dmdba/dsc_full_bak'

校验备份,显示successfully,即为备份集有效。

CHECK BACKUPSET '/home/dmdba/dsc_full_bak'

 

 做完备份后把备份拷贝到异步备机上

scp -r dsc_full_bak/ dmdba@192.168.238.130:/dmbak

2、配置异步备库

本文默认创建好该备库实例了,若没创建的先创建再往下走。备库实例其实就是一个单机实例而已,按照单机实例创建即可。创建好后必须启动实例以完成初始化,并配置后台启动。

【关闭并检查备库机器】

关闭备库数据库服务

#备库
cd /dmdbms/bin
./DmService stop 

查看是否开启map服务,没开则执行以下

./DmAPService start 

  

【备库脱机还原恢复】

开启dmrman

./dmrman USE_AP=2

使用 DMDSC 库的备份集还原恢复到异步备库,按顺序执行

RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/dsc_full_bak';
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/dsc_full_bak';
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' update db_magic;

【配置dm.ini】

依次配置DMDSC主库每个节点与异步备库的dm.ini文件

(1)修改DSC0的dm.ini

cd /dmdata/dsc0_config
vim dm.ini
INSTANCE_NAME = DSC0 
PORT_NUM = 5237     #数据库实例监听端口 
DW_INACTIVE_INTERVAL = 60        #接收守护进程消息超时时间 
ALTER_MODE_STATUS = 0       #不允许手工方式修改实例模式/状态 
ENABLE_OFFLINE_TS = 2        #不允许备库 OFFLINE 表空间 
MAL_INI = 1         #打开 MAL 系统 
ARCH_INI = 1           #打开归档配置 
RLOG_SEND_APPLY_MON = 64        #统计最近 64 次的日志发送信息 
TIMER_INI = 1 

(2)修改DSC1的dm.ini

cd /dmdata/dsc1_config
vim dm.ini
NSTANCE_NAME = DSC1
PORT_NUM = 5237     #数据库实例监听端口 
DW_INACTIVE_INTERVAL = 60        #接收守护进程消息超时时间 
ALTER_MODE_STATUS = 0       #不允许手工方式修改实例模式/状态 
ENABLE_OFFLINE_TS = 2        #不允许备库 OFFLINE 表空间
MAL_INI = 1         #打开 MAL 系统 
ARCH_INI = 1           #打开归档配置 
RLOG_SEND_APPLY_MON = 64        #统计最近 64 次的日志发送信息 
TIMER_INI = 1

(3)修改DSC_DW的dm.ini文件

cd /dmdata/DSC_DW
vim dm.ini
INSTANCE_NAME = DSC_DW
PORT_NUM = 5237     #数据库实例监听端口 
DW_INACTIVE_INTERVAL = 60        #接收守护进程消息超时时间 
ALTER_MODE_STATUS = 0       #不允许手工方式修改实例模式/状态 
ENABLE_OFFLINE_TS = 2        #不允许备库 OFFLINE 表空间 
MAL_INI = 1         #打开 MAL 系统 
ARCH_INI = 1           #打开归档配置 
RLOG_SEND_APPLY_MON = 64        #统计最近 64 次的日志发送信息 
TIMER_INI = 1 

【配置dmmal.ini】

在 DMDSC 集群的 dmmal.ini 文件基础上,增加备库 DSC_DW 的配置项。
所有节点实例的 dmmal.ini 文件内容是一致的,修改之后,拷贝到dsc所有节点,以及异步备机。

#所有节点,包括DSC_DW
vim dmmal.ini
MAL_CHECK_INTERVAL = 30
MAL_CONN_FAIL_INTERVAL = 10
[MAL_INST0]
 MAL_INST_NAME = DSC0
 MAL_HOST = 10.10.1.115
 MAL_PORT = 11246
 MAL_INST_HOST = 192.168.1.115
 MAL_INST_PORT = 5237
 MAL_DW_PORT = 11296
MAL_INST_DW_PORT = 11306
[MAL_INST1]
 MAL_INST_NAME = DSC1 
 MAL_HOST = 10.10.1.116
 MAL_PORT = 11246 
 MAL_INST_HOST = 192.168.1.116
 MAL_INST_PORT = 5237
 MAL_DW_PORT = 11296
MAL_INST_DW_PORT = 11306
[MAL_INST2]
 MAL_INST_NAME = DSC_DW
 MAL_HOST = 10.10.1.117
 MAL_PORT = 11246
 MAL_INST_HOST = 192.168.1.117
 MAL_INST_PORT = 5237
 MAL_DW_PORT = 11296
MAL_INST_DW_PORT = 11306

【配置dmarch.ini】

编辑各个节点的dmarch.ini,增加异步归档配置

(1)修改DSC0的dmarch.ini

cd /dmdata/dsc0_config
vim dmarch.ini
ARCH_LOCAL_SHARE=1
ARCH_LOCAL_SHARE_CHECK=0

[ARCHIVE_LOCAL1]
  ARCH_TYPE     = LOCAL
  ARCH_DEST     = +DMARCH/DSC0/arch
  ARCH_FILE_SIZE        = 1024
  ARCH_SPACE_LIMIT      = 40960

[ARCH_REMOTE1]
  ARCH_TYPE     = REMOTE
  ARCH_DEST     = DSC1
  ARCH_INCOMING_PATH   =+DMARCH/DSC1/arch_remote
  ARCH_FILE_SIZE        = 1024
  ARCH_SPACE_LIMIT      = 40960

[ARCHIVE_ASYNC] 
ARCH_TYPE = ASYNC
ARCH_DEST = DSC_DW
ARCH_TIMER_NAME = RT_TIMER

(2)修改DSC1的dmarch.ini

cd /dmdata/dsc1_config
vim dmarch.ini
ARCH_LOCAL_SHARE=1
ARCH_LOCAL_SHARE_CHECK=0

[ARCHIVE_LOCAL1]
  ARCH_TYPE     = LOCAL
  ARCH_DEST     = +DMARCH/DSC1/arch
  ARCH_FILE_SIZE        = 1024
  ARCH_SPACE_LIMIT      = 40960

[ARCH_REMOTE1]
  ARCH_TYPE     = REMOTE
  ARCH_DEST     = DSC0
  ARCH_INCOMING_PATH   =+DMARCH/DSC0/arch_remote
  ARCH_FILE_SIZE        = 1024
  ARCH_SPACE_LIMIT      = 40960

[ARCHIVE_ASYNC] 
ARCH_TYPE = ASYNC
ARCH_DEST = DSC_DW
ARCH_TIMER_NAME = RT_TIMER

(3)修改DSC_DW的dmarch.ini

cd /dmdata/DSC_DW
vim dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400

【配置dmtimer.ini】

(1)配置DSC0的dmtimer.ini

cd /dmdata/dsc0_config
vim dmtimer.ini
[RT_TIMER]#和dmarch.ini中的ARCH_TIMER_NAME一致
TYPE = 2
 FREQ_MONTH_WEEK_INTERVAL = 1
 FREQ_SUB_INTERVAL = 0
 FREQ_MINUTE_INTERVAL = 0
 START_TIME = 01:00:00
 END_TIME = 01:00:10
 DURING_START_DATE = 2016-02-11 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
 NO_END_DATE_FLAG = 1
 DESCRIBE = RT TIMER
 IS_VALID = 1 

 (2)配置DSC1的dmtimer.ini

cd /dmdata/dsc1_config
vim dmtimer.ini
[RT_TIMER]#和dmarch.ini中的ARCH_TIMER_NAME一致 
TYPE = 2
 FREQ_MONTH_WEEK_INTERVAL = 1
 FREQ_SUB_INTERVAL = 0
 FREQ_MINUTE_INTERVAL = 0
 START_TIME = 01:00:00
 END_TIME = 01:00:10
 DURING_START_DATE = 2016-02-11 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
 NO_END_DATE_FLAG = 1
 DESCRIBE = RT TIMER
 IS_VALID = 1

【配置dmwatcher.ini】

(1)配置DSC0的dmwatcher.ini

cd /dmdata/dsc0_config
vim dmwatcher.ini
[GRP1]
 DW_TYPE = LOCAL
 DW_MODE = MANUAL
 DW_ERROR_TIME = 60
 INST_RECOVER_TIME = 60
 INST_ERROR_TIME = 35
INST_INI = /dmdata/dsc0_config/dm.ini
DCR_INI = /dmdata/dmdcr.ini
 INST_OGUID = 453331
 INST_STARTUP_CMD = /dmdbms/bin/dmserver
 INST_AUTO_RESTART = 0
 RLOG_SEND_THRESHOLD = 0
 RLOG_APPLY_THRESHOLD = 0

(2)配置DSC1的dmwatcher.ini

cd /dmdata/dsc1_config
vim dmwatcher.ini
[GRP1]
 DW_TYPE = LOCAL
 DW_MODE = MANUAL
 DW_ERROR_TIME = 60
 INST_RECOVER_TIME = 60
 INST_ERROR_TIME = 35
INST_INI = /dmdata/dsc1_config/dm.ini
DCR_INI = /dmdata/dmdcr.ini
 INST_OGUID = 453331
 INST_STARTUP_CMD = /dmdbms/bin/dmserver
 INST_AUTO_RESTART = 0
 RLOG_SEND_THRESHOLD = 0
 RLOG_APPLY_THRESHOLD = 0

(3)配置DSC_DW的dmwatcher.ini

cd /dmdata/DSC_DW
vim dmwatcher.ini
[GRP1]
 DW_TYPE = LOCAL
 DW_MODE = MANUAL
 DW_ERROR_TIME = 60
 INST_RECOVER_TIME = 60
 INST_ERROR_TIME = 35
INST_INI = /dmdata/DSC_DW/dm.ini
 INST_OGUID = 453331
 INST_STARTUP_CMD = /dmdbms/bin/dmserver
 INST_AUTO_RESTART = 0
 RLOG_SEND_THRESHOLD = 0
 RLOG_APPLY_THRESHOLD = 0

【配置dmmonitor.ini】

配置在备库的/dmdbms/bin目录下

cd /dmdbms/bin
vim dmmonitor.ini
MON_LOG_PATH = /dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 64
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 10.10.1.115:11296/10.10.1.116:11296
MON_DW_IP = 10.10.1.117:11296

【启动主备库】

(1)启动DMDSC主库

以mount状态启动,若是后台启动,改启动脚本START_MODE=open改为START_MODE=mount

./DmService start

把dsc所有节点全部启动,使其所有节点都启动成功

可查看实例日志,看到SYSTEM IS READY表示启动完成

 


【启动异步备库】

(1)修改DmService后台启动脚本

以mount状态启动

vi DmService

把START_MODE=open改为START_MODE=mount

(2)启动异步备库数据库服务

cd /dmdbms/bin
./DmService start

【设置OGUID】

启动命令行工具disql,连接DMDSC集群中的任意一个节点,设置DMDSC主库的OGUID值

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

再使用disql,连接异步备库,设置备库OGUID值

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

【修改主库模式】

使用disql,连接DMDSC集群中的任意一个节点,设置DMDSC主库的primary模式

SQL>ALTER DATABASE PRIMARY;

使用disql,连接异步备库,设置备库的standby模式

SQL>ALTER DATABASE STANDBY;

【配置守护进程】

(1)修改守护进程后台启动脚本

在每个节点的目录/dmdbms/bin/service_template
拷贝DmWatcherService文件到/ dmdbms/bin目录下
然后修改DmWatcherService中 INI_PATH为指定守护进程配置文件dmwatcher.ini的对应的路径。

(2)启动守护进程

启动DSC0的守护进程

./DmWatcherService start

启动DSC1的守护进程

./DmWatcherService start

启动DSC_DW的守护进程

./DmWatcherService start

【确认数据库状态】

登录disql,查看DMDSC主库两个节点是否为主库打开状态
登录disql,查看异步备库节点是否为备库打开状态

【修改dmdcr.ini脚本】可选执行

修改DMDSC两个节点上的dmdcr.ini文件,让dmcss自动拉起dmasm和dmserver服务
这样只需要分别在两台机器上启动dmcss服务即可拉起dmasm服务和dmserver服务。

(1)修改DSC0节点:

cd /dmdata
vim dmdcr.ini
DMDCR_PATH     = /dev/asm-dmdcr
DMDCR_MAL_PATH =/dmdata/dmasvrmal.ini  
DMDCR_SEQNO   = 0

DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /dmdbms/bin/dmasmsvr dcr_ini=/dmdata/dmdcr.ini

DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /dmdbms/bin/dmserver path=/dmdata/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

(2)修改DSC1节点:

cd /dmdata
vim dmdcr.ini
DMDCR_PATH     = /dev/asm-dmdcr
DMDCR_MAL_PATH =/dmdata/dmasvrmal.ini  
DMDCR_SEQNO   = 1

DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /dmdbms/bin/dmasmsvr dcr_ini=/dmdata/dmdcr.ini

DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /dmdbms/bin/dmserver path=/dmdata/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

修改之后需要重启DMDSC+异步备机,才可以生效
(1)关闭异步备机的守护进程

./DmWatcherService stop

(2)关闭DMDSC主库两个节点的守护进程

./DmWatcherService stop

(3)关闭DMDSC主库两个节点的数据库服务

./DmService stop

(4)关闭异步备机的数据库服务

./DmService stop

(5)关闭DMDSC主库两个节点的ASM服务

./DmASMSvrService stop

(6)关闭DMDSC主库两个节点的CSS服务

./DmCSSService stop

启动DMDSC+异步备机集群
(1)启动DMDSC主库两个节点的CSS服务

./DmCSSService start

等待2分钟,查看css是否将asm和server拉起,拉起后再启动下面的服务

ps -ef | grep dmdbms

(4)启动异步备机的数据库服务

./DmService start

(5)启动DMDSC主库两个节点的守护进程

./DmWatcherService start

(6)启动异步备机的守护进程

./DmWatcherService start

【关闭DMDSC集群】可选执行

必须严格按照以下顺序停止DMDSC集群,每个操作步骤直接的时间间隔不要超过30秒

(1)关闭异步备机的守护进程

./DmWatcherService stop

(2)关闭DMDSC主库两个节点的守护进程

./DmWatcherService stop

(3)关闭DMDSC主库两个节点的数据库服务

./DmService stop

(4)关闭异步备机的数据库服务

./DmService stop

(5)关闭DMDSC主库两个节点的ASM服务

./DmASMSvrService stop

(6)关闭DMDSC主库两个节点的CSS服务

./DmCSSService stop

注:正常停库时必须2节点同时停止,根据目前脚本配置,CSS启动后30秒自动拉起DmASMSvrService,ASM启动后1分钟自动拉起DmService,所以停止DmService和DmASMSvrService后要尽快停下一个服务,避免被自动拉起,同时DmASMSvrService服务在任意一个节点停止会停2个节点的ASM服务,为了保险起见也可以两边都停止下,全部停止后要观察后台进程是否全部停止。

【DMDSC+异步备机集群监控】

在dsc的控制节点,/dmdbms/bin目录下(安装目录)新建一个dmcssm.ini文件,写入以下:

CSSM_OGUID      = 63635
CSSM_CSS_IP     = DSC0的ip:11286
CSSM_CSS_IP     = DSC1的ip:11286
CSSM_LOG_PATH   = ../log    
CSSM_LOG_FILE_SIZE      = 32
CSSM_LOG_SPACE_LIMIT    = 0

启动css的监视器

./dmcssm INI_PATH=dmcssm.ini

 启动数据守护监视器

cd /dmdbms/bin
./dmmonitor dmmonitor.ini

查看主备库状态是否正常,正常即完成部署。

社区地址:https://eco.dameng.com

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UVM验证是一种基于SystemVerilog的硬件验证方法,广泛应用于半导体行业。它提供了一套强大的验证框架,可以帮助工程师有效地进行验证工作。 异步FIFO验证是UVM验证中的一个重要部分,用于验证异步First-In-First-Out(FIFO)电路。异步FIFO电路在大多数存储器系统中被广泛使用,因此验证其功能和性能非常重要。 在异步FIFO验证中,需要编写UVM验证环境和测试用例,以验证FIFO电路的功能和时序。首先,可以使用UVM的类来建立一个FIFO模型,包括读写指针、写入和读出逻辑等。然后,可以编写Constrained Random测试用例,以测试FIFO的各种情况,例如空FIFO、满FIFO和部分写入/读出的情况。验证环境会控制测试用例的生成和执行,同时收集和分析验证结果。 在异步FIFO验证中,还需处理时序相关的问题。由于读写指针的异步性质,可能会出现读指针追赶写指针或写指针追赶读指针的情况。为了验证这些情况,可以引入时序检查和约束,以确保FIFO电路在各种时序条件下都能正常工作。 总结来说,UVM验证是一种基于SystemVerilog的硬件验证方法,可以帮助工程师进行有效的验证工作。在异步FIFO验证中,需要建立UVM验证环境和编写测试用例,以验证异步FIFO电路的功能和时序。该验证过程涉及到建模、生成测试用例和进行时序验证等步骤,以确保FIFO电路能够正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值