DMDSC+异步备机,就是在原有的DMDSC集群上,为其部署一台备库,但该备库复制数据时,是异步的。
需要先明确一下概念,DMDSC集群,集群里每个数据库服务,都是1个节点。所有数据库服务(所有节点)视为一个DSC集群,它们是一个整体,不管有多少节点。
说通俗点,把这些节点,看成一个数据库服务即可。
其次,DMDSC集群这么多节点,虽然是一个整体,但是会有一个节点,负责控制其他的节点(就像个领头羊),那个节点的名字叫控制节点,其他节点都叫普通节点。
控制节点一般都是最早启动的那个服务。控制节点可以控制其他节点一起关闭(正常关闭集群时,只需在控制节点执行关闭命令,所有节点会同时跟它一起关闭,但是开启还得手动一个个开),
同时也具备切换功能,比如控制节点突发意外死亡了,那么其他的普通节点会切换为控制节点。
接下来说DMDSC+异步备机,主库是DMDSC集群(上面说了,不管DSC集群多少个节点,它们是一个整体),备库(异步备机)是一个单实例。
通俗点说,DMDSC集群这一堆节点(数据库服务)都是主库,备库是一个单机实例而已。
这里已经搭建好DSC集群,没搭建的先看此处:达梦DMDSC集群部署搭建_dcps75321的博客-CSDN博客
然后准备一台新的linux机器,安装dm8并初始化好一个实例启动即可
本文使用以下实例名:
DSC0,是dsc的0号节点
DSC1,是dsc的1号节点
DSC_DW,是异步备机
开始部署搭建 【关闭DSC】
关闭DSC所有节点的数据库服务,可直接在控制节点执行
若是后台启动,那就全部手动关闭
DSC0节点:
./DmService stop
DSC1节点:
./DmService stop【DSC集群做备份】
在DSC集群任意节点
查看是否开启DmAP服务,没开则执行以下
./DmAPService start
启动dmrman
./dmrman use_ap=2 dcr_ini=/dmdbms/config/dmdcr.ini
做备份
RMAN>BACKUP DATAbase '/dmdbms/dmdata/dsc0_config/dm.ini' FULL BACKUPSET '/backup/db_full_bak_for_DSC'
校验备份,显示successfully,即为备份集有效。
check BACKUPSET '/backup/db_full_bak_for_DSC'
做完备份后把备份拷贝到异步备机上
scp -r dmdba@192.168.238.130:/dmbak配置异步备库 【关闭并检查备库机器】
关闭备库数据库服务
./DmService stop
查看是否开启DmAP服务,没开则执行以下
./DmAPService start【备库脱机还原恢复】
开启dmrman
./dmrman USE_AP=2
使用 DMDSC 库的备份集还原恢复到异步备库,按顺序执行
RESTORE DATAbase '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/db_full_bak_for_DSC'; RECOVER DATAbase '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/db_full_bak_for_DSC'; RECOVER DATAbase '/dmdata/DAMENG/dm.ini' update db_magic;【配置dm.ini】
依次配置DMDSC主库每个节点与异步备库的dm.ini文件
(1)修改DSC0的dm.iniINSTANCE_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
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文件
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所有节点,以及异步备机。
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.iniARCH_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
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
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmarch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400【配置dmtimer.ini】 (1)配置DSC0的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
[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
[GRP1] DW_TYPE = LOCAL DW_MODE = MANUAL DW_ERROR_TIME = 60 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 35 INST_INI = /dmdbms/dmdata/dsc0_config/dm.ini DCR_INI = /dmdbms/config/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
[GRP1] DW_TYPE = LOCAL DW_MODE = MANUAL DW_ERROR_TIME = 60 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 35 INST_INI = /dmdbms/dmdata/dsc1_config/dm.ini DCR_INI = /dmdbms/config/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
[GRP1] DW_TYPE = LOCAL DW_MODE = MANUAL DW_ERROR_TIME = 60 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 35 INST_INI = /dmdata/DAMENG/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目录下
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所有节点全部启动,使其所有节点都启动成功
【启动异步备库】 (1)修改DmService后台启动脚本
以mount状态启动
vi DmService
把START_MODE=open改为START_MODE=mount
(2)启动异步备库库数据库服务./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的对应的路径。
启动DSC0的守护进程
./DmWatcherService start
启动DSC1的守护进程
./DmWatcherService start
启动DSC_DW的守护进程
./DmWatcherService start【确认数据库状态】
登录disql,查看DMDSC主库两个节点是否为主库打开状态
登录disql,查看异步备库节点是否为备库打开状态
修改DMDSC两个节点上的dmdcr.ini文件,让dmcss自动拉起dmasm和dmserver服务
这样只需要分别在两台机器上启动dmcss服务即可拉起dmasm服务和dmserver服务。
DMDCR_PATH = /dev/asm-dmdcr DMDCR_MAL_PATH =/dmdbms/config/dmasvrmal.ini DMDCR_SEQNO = 0 DMDCR_ASM_RESTART_INTERVAL = 30 DMDCR_ASM_STARTUP_CMD = /dmdbms/bin/dmasmsvr dcr_ini=/dmdbms/config/dmdcr.ini DMDCR_DB_RESTART_INTERVAL = 60 DMDCR_DB_STARTUP_CMD = /dmdbms/bin/dmserver path=/dmdbms/dmdata/dsc0_config/dm.ini dcr_ini=/dmdbms/config/dmdcr.ini(2)修改DSC1节点:
DMDCR_PATH = /dev/asm-dmdcr DMDCR_MAL_PATH =/dmdbms/config/dmasvrmal.ini DMDCR_SEQNO = 1 DMDCR_ASM_RESTART_INTERVAL = 30 DMDCR_ASM_STARTUP_CMD = /dmdbms/bin/dmasmsvr dcr_ini=/dmdbms/config/dmdcr.ini DMDCR_DB_RESTART_INTERVAL = 60 DMDCR_DB_STARTUP_CMD = /dmdbms/bin/dmserver path=/dmdbms/dmdata/dsc1_config/dm.ini dcr_ini=/dmdbms/config/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
【DMDSC+异步备机集群监控】注:正常停库时必须2节点同时停止,根据目前脚本配置,CSS启动后30秒自动拉起DmASMSvrService,ASM启动后1分钟自动拉起DmService,所以停止DmService和DmASMSvrService后要尽快停下一个服务,避免被自动拉起,同时DmASMSvrService服务在任意一个节点停止会停2个节点的ASM服务,为了保险起见也可以两边都停止下,全部停止后要观察后台进程是否全部停止。
在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



