注册
DSC主备搭建
技术分享/ 文章详情 /

DSC主备搭建

,,, 2026/07/31 212 0 0

DSC主备搭建

在达梦数据库(DM)架构中,“DSC(数据共享集群)+ 主备(数据守护 Data Watch)”的组合是一个典型的兼顾高可用与高性能的综合解决方案。

DSC 允许多个数据库实例同时访问并修改共享存储上的同一份数据,实现真正的 并行处理 。它通过负载均衡将业务流量分发到各节点,极大提升了系统的整体事务吞吐量(TPS/QPS)和并发处理能力。

DSC 解决了单节点故障问题,但所有节点依赖同一块共享存储,若存储失效则服务中断。引入主备(Data Watch)后,备库部署在独立机器和独立存储上,通过实时日志同步实现异地或跨存储的数据保护。当 DSC 集群发生极端故障时,备库可快速接管,实现 RPO=0(数据零丢失)和 RTO<10秒(秒级恢复)。

本文将在三台虚拟机上,部署dsc主备集群,两台机器分别部署一个dsc节点构成dsc集群 使用共享磁盘 当作主库,剩下一台机器部署单节点dm 使用单独硬盘 当作备库。

1. 环境准备

虚拟机准备

创建三台虚拟机,均安装好了dm数据库,同时配置好一套跨1和2节点的共享磁盘。

dm的安装路径为:/home/dmdba/dmdbms

所有的命令行工具都在/home/dmdba/dmdbms/bin下

网络和端口规划

三台机子ip分别为:

DSC01 : 192.168.184.129

DSC02 : 192.168.184.130

DM : 192.168.184.128

为了实践的方便性,不区分对内网卡和业务网卡,统一只使用一个ip地址。

端口规划

dsc相关端口

dsc01

实例名 DCR_EP_PORT MAL_PORT
CSS0 9836 /
ASM0 5836 4836
DSC01 6636 6536

配置文件路径:/home/dmdba/dmdsc/data/DSC01

dsc02

实例名 DCR_EP_PORT MAL_PORT
CSS1 9837 /
ASM1 5837 4837
DSC02 6637 6537

配置文件路径:/home/dmdba/dmdsc/data/DSC02

dw相关端口
实例名 PORT_NUM MAL_INST_DW_PORT MAL_PORT MAL_DW_PORT
DSC01 6636 4566 6536 3566
DSC02 6637 4567 6537 3567
GRP1_RT_01 6638 4568 6538 3568

2. 搭建DSC

固定磁盘

使用下面命令来查看有哪些磁盘

lsblk

通过 scsi_id 获取磁盘信息

/usr/lib/udev/scsi_id -g -u /dev/sdb
234074fa79680f431

同样的方式获取其他几块盘的scsi_id

编写/etc/udev/rules.d/66-dmdevices.rules,创建磁盘链接

## DCR 磁盘配置,且在软链接之前创建文件夹/dev_DSC2 
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2900791af5270c8f690860855c6",SYMLINK+="DCR",OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba/dev/$name;mkdir -p /dev_DSC2; ln -s /dev/DCR /dev_DSC2/DCR'"
## VOTE 磁盘配置
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29039d146822bbbf55246f50a16",SYMLINK+="VOTE", OWNER="dmdba",GROUP="dmdba", MODE="0660",RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/VOTE /dev_DSC2/VOTE'"
## DMDATA 磁盘配置
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c296497388ed68408470fce830a4",SYMLINK+="DMDATA", OWNER="dmdba",GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMDATA /dev_DSC2/DMDATA'"
## DMLOG 磁盘配置,且在搭建完成之后,将权限直接赋予 dmdba 组的 dmdba 用户
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c294306e1a883e1e4ddcf39f8f16",SYMLINK+="DMLOG", OWNER="dmdba",GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMLOG /dev_DSC2/DMLOG ; chown -R dmdba:dmdba /dev_DSC2'"

从配置信息可以看出,通过 scsi_id 找到磁盘后,在/dev/下命名了磁盘信息,然后再做软链接到/dev_DSC2 下。

重启 systemd-udev-trigger 服务。

systemctl restart systemd-udev-trigger

配置DSC01

DMDCR_CFG.INI

准 备 配 置 文 件 DMDCR_CFG.INI 文 件 , 保存到dsc01机器的/home/dmdba/dmdsc/data/DSC01 下。

DCR_N_GRP= 3
DCR_VTD_PATH=/dev_DSC2/VOTE
DCR_OGUID= 1071107589

[GRP]
 DCR_GRP_TYPE = CSS
 DCR_GRP_NAME = GRP_CSS
 DCR_GRP_N_EP = 2
 DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]
 DCR_EP_NAME = CSS0
 DCR_EP_HOST = 192.168.184.129
 DCR_EP_PORT = 9836
[GRP_CSS]
 DCR_EP_NAME = CSS1
 DCR_EP_HOST = 192.168.184.130
 DCR_EP_PORT = 9837

[GRP]
DCR_GRP_TYPE= ASM
DCR_GRP_NAME= GRP_ASM
DCR_GRP_N_EP= 2
DCR_GRP_DSKCHK_CNT= 60
[GRP_ASM]
DCR_EP_NAME= ASM0
DCR_EP_SHM_KEY= 64735
DCR_EP_SHM_SIZE= 512
DCR_EP_HOST= 192.168.184.129
DCR_EP_PORT= 5836
DCR_EP_ASM_LOAD_PATH= /dev_DSC2
[GRP_ASM]
DCR_EP_NAME= ASM1
DCR_EP_SHM_KEY= 54736
DCR_EP_SHM_SIZE= 512
DCR_EP_HOST= 192.168.184.130
DCR_EP_PORT= 5837
DCR_EP_ASM_LOAD_PATH= /dev_DSC2

[GRP]
DCR_GRP_TYPE= DB
DCR_GRP_NAME= GRP_DSC
DCR_GRP_N_EP= 2
DCR_GRP_DSKCHK_CNT= 60
[GRP_DSC]
DCR_EP_NAME= DSC01
DCR_EP_SEQNO= 0
DCR_EP_PORT= 6636
[GRP_DSC]
DCR_EP_NAME= DSC02
DCR_EP_SEQNO= 1
DCR_EP_PORT= 6637

DMASVRMAL.INI

准 备 DMASM 的 MAL 配 置 文 件 DMASVRMAL.INI , 保 存 到 DSC01机 器 的/home/dmdba/dmdsc/data/DSC01 下。

[MAL_INST1]
MAL_INST_NAME= ASM0
MAL_HOST= 192.168.184.129
MAL_PORT= 4836
[MAL_INST2]
MAL_INST_NAME= ASM1
MAL_HOST= 192.168.184.130
MAL_PORT= 4837

DMDCR.INI

准备 DMDCR.INI 文件,保存到DSC01机器 home/dmdba/dmdsc/data/DSC01 下

DMDCR_PATH 		= /dev_DSC2/DCR 
DMDCR_MAL_PATH 	= /home/dmdba/dmdsc/data/DSC01/dmasvrmal.ini 
DMDCR_SEQNO = 0 
DMDCR_ASM_RESTART_INTERVAL = 0 
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr 
dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini 
DMDCR_DB_RESTART_INTERVAL = 0 
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver 
path=/home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini 
dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
DMDCR_LINK_CHECK_IP=192.168.184.128

dmdcr_cfg.ini相当于是集群的总体配置,而dmdcr,ini是节点的配置,用来决定节点asm,db如何拉起,集群注册配置的磁盘位置等。

DMDCR_DB_RESTART_INTERVAL , DMDCR_ASM_RESTART_INTERVAL是重启间隔,配置为0则为不自动拉起

DMDCR_DB_STARTUP_CMD , DMDCR_ASM_STARTUP_CMD 是自动拉起时使用的cmd目录。

设置了 DMDCR_LINK_CHECK_IP,须为dsc01节点的 DMSERVER、DMASMSVR、DMCSS赋予 ping 权限

sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdbms/bin/dmserver
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdbms/bin/dmasmsvr
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdbms/bin/dmcss

DMDCR_LINK_CHECK_IP:在双节点 DSC 集群中,如果节点间的 MAL 网络出现异常,DMCSS 默认会保留节点号小的节点。为了防止误判,可以配置此参数指向一个第三方 IP(如网关)。当网络异常时,节点会尝试 ping 该 IP,DMCSS 将结合 ping 的结果来综合判断,从而主动 HALT 掉真正断网的节点,保留正常节点

DMINIT.INI

准备 DMINIT.INI 配置文件,保存到dsc01机器的/home/dmdba/dmdsc/data/DSC01下

dminit.ini 是达梦数据库(DM)在使用 dminit 工具进行初始化时所使用的控制文件(配置文件)。通过它,你可以集中定义数据库的物理存储结构、逻辑参数以及集群节点信息,工具会自动生成对应的dm.ini等文件供数据库启动。

DB_NAME= dsc2
SYSTEM_PATH= +DMDATA/data
SYSTEM= +DMDATA/data/dsc2/system.dbf
SYSTEM_SIZE= 128
ROLL= +DMDATA/data/dsc2/roll.dbf
ROLL_SIZE= 128
MAIN= +DMDATA/data/dsc2/main.dbf
MAIN_SIZE= 128
CTL_PATH= +DMDATA/data/dsc2/dm.ctl
LOG_SIZE= 2048
DCR_PATH= /dev_DSC2/DCR
DCR_SEQNO= 0
AUTO_OVERWRITE= 2
PAGE_SIZE = 16
EXTENT_SIZE = 16
SYSDBA_PWD=DMdba_123
SYSAUDITOR_PWD=DMauditor_123
[DSC01]
CONFIG_PATH= /home/dmdba/dmdsc/data/DSC01/DSC01_conf
PORT_NUM = 6636
MAL_HOST= 192.168.184.129
MAL_PORT= 6536
LOG_PATH= +DMLOG/log/DSC01_log1.log
LOG_PATH= +DMLOG/log/DSC01_log2.log
[DSC02]
CONFIG_PATH= /home/dmdba/dmdsc/data/DSC02/DSC02_conf
PORT_NUM = 6637
MAL_HOST= 192.168.184.130
MAL_PORT= 6537
LOG_PATH= +DMLOG/log/DSC02_log1.log
LOG_PATH= +DMLOG/log/DSC02_log2.log

DMCSSM.INI

dmcssm是集群监视器,

可以在任何机器上均可以启动,只要该台机器和 DMDSC 的真实机器网络是相通的,就可以监控 DMDSC 集群信息,配置文件中含各节点的网络信息等。

#和 DMDCR_CFG.INI 中的 DCR_OGUID 保持一致
CSSM_OGUID = 1071107589 
#配置所有 CSS 的连接信息
#与 DMDCR_CFG.INI 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 192.168.184.129:9836
CSSM_CSS_IP = 192.168.184.130:9837
CSSM_LOG_PATH = /home/dmdba/dmdsc/data/cssm_log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间`

配置DSC02

DMASVRMAL.INI

和 DSC01 的 DMASVRMAL.INI 内容完全一样,保存到 110 的/home/dmdba/dmdsc/data/DSC02 下

[MAL_INST1]
MAL_INST_NAME= ASM0
MAL_HOST= 192.168.184.129
MAL_PORT= 4836
[MAL_INST2]
MAL_INST_NAME= ASM1
MAL_HOST= 192.168.184.130
MAL_PORT= 4837

DMDCR.INI

/home/dmdba/dmdsc/data/DSC02 下

DMDCR_PATH = /dev_DSC2/DCR 
DMDCR_MAL_PATH = /home/dmdba/dmdsc/data/DSC02/dmasvrmal.ini 
DMDCR_SEQNO = 1 
DMDCR_ASM_RESTART_INTERVAL = 0 
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0 
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
DMDCR_LINK_CHECK_IP=192.168.184.128

同样地开启ping权限

sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdbms/bin/dmserver
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdbms/bin/dmasmsvr
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdbms/bin/dmcss

初始化磁盘

在 DSC01机器使用 DMASMCMD 工具初始化所有磁盘。

/home/dmdba/dmdbms/bin/dmasmcmd

create dcrdisk '/dev_DSC2/DCR' 'DCR'
create votedisk '/dev_DSC2/VOTE' 'VOTE'
create asmdisk '/dev_DSC2/DMDATA' 'DMDATA'
create asmdisk '/dev_DSC2/DMLOG' 'DMLOG'
init dcrdisk '/dev_DSC2/DCR' from '/home/dmdba/dmdsc/data/DSC01/dmdcr_cfg.ini' identified by 'DCRpsd_123'
init votedisk '/dev_DSC2/VOTE' from '/home/dmdba/dmdsc/data/DSC01/dmdcr_cfg.ini'

启动服务

DMCSS

DSC01启动 DMCSS:

./dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini

DSC02启动DMCSS:

./dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini

DMASM

DSC01启动 DMASMSVR

./dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini

DSC02启动 DMASMSVR

./dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini

创建asm磁盘组

使用 DMASMTOOL 工具创建 ASM 磁盘组,在DSC01执行

./dmasmtool dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini

创建一个 DATA 磁盘组和一个 LOG 磁盘组。

#创建 DATA 磁盘组
CREATE DISKGROUP DMDATA asmdisk '/dev_DSC2/DMDATA'
#创建 LOG 磁盘组
CREATE DISKGROUP DMLOG asmdisk '/dev_DSC2/DMLOG'

dmasmcmd 用于格式化底层物理磁盘(相当于“格式化硬盘”),而 dmasmtool 用于在这些物理磁盘之上创建逻辑磁盘组(相当于“建立逻辑分区”)

初始化数据库

选择一个节点,启动 DMINIT 初始化数据库,。DMINIT 执行完成后,会在 config_path 目录(/home/dmdba/dmdsc/data/DSC01/DSC01_conf 和/home/dmdba/dmdsc/data/DSC02/DSC02_conf)下生成配置文件 DM.INI 和DMMAL.INI。

./dminit control=/home/dmdba/dmdsc/data/DSC01/dminit.ini

之后将整个DSC02_conf 复制到DSC02机器下的相同位置。

启动数据库

#DSC01 服务器启动:
cd /home/dmdba/dmdbms/bin
./dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini

#DSC02 节点服务器启动:
cd /home/dmdba/dmdbms/bin
./dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini

启动DMCSSM

任意机器,只要安装了dm即可,这里我们在DSC01机器上启动

创建 DMCSSM 的日志存放路径

mkdir /home/dmdba/dmdsc/data/cssm_log

启动 DMCSSM 集群监视器

./dmcssm ini_path=/home/dmdba/dmdsc/data/dmcssm.ini

DMCSSM 启动之后,可使用 show 命令在 DMCSSM 监视器中查看集群状态信息。

如果看到所有节点(css,asm,db)状态均为open,说明dsc集群已搭建成功。

验证可用

在网络能连上节点的任意机器上,配置dm_svc.conf,加入以下内容

DSC2=(192.168.184.129:6636,192.168.184.130:6637)

使用服务名对dsc集群进行连接

./disql SYSDBA@DSC2

3.搭建主备

配置DSC主库环境

dmcss 对 DMServer 的自动拉起功能先不要打开,避免影响到配置过程。

正常退出 DMDSC 集群的两个 DMServer 节点实例,不需要退出 dmcss

和 dmasmsvr。

dmarch.ini

分别编辑两个 DMDSC 节点的 dmarch.ini 文件,增加本地归档和远程归档。dmarch.ini

文件放在各自 dm.ini 中指定的 CONFIG_PATH 目录下,默认是

DSC01的归档配置
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL 
ARCH_DEST = +DMDATA/DSC/DSC01/arch
ARCH_FILE_SIZE = 128 
ARCH_SPACE_LIMIT = 0 
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC02
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC02/arch
DSC02的归档配置
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL 
ARCH_DEST = +DMDATA/DSC/DSC02/arch
ARCH_FILE_SIZE = 128 
ARCH_SPACE_LIMIT = 0 
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC01
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC01/arch

dm.ini

分别编辑两个dmdsc节点的dm.ini文件,打开归档参数:

ARCH_INI= 1

备份dsc库

重启 DMDSC 集群的两个 DMServer 实例,然后再正常退出。在 DMDSC 集群生成有

归档日志的情况下进行脱机备份,以便后续校验日志连续性时使用。

./dmrman use_ap=2 dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini


>BACKUP DATABASE ' /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini' FULL BACKUPSET ' /home/dmdba/dmdsc/data/bak01';

use_ap=2:备份操作将不依赖 DMAP 辅助进程

再次配置dm.ini

DSC01

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

DSC02

INSTANCE_NAME = DSC02 
PORT_NUM = 6537
DW_INACTIVE_INTERVAL = 60 
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

再次配置dmarch.ini

增加实时归档配置,两个dsc节点都需要

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01

dmwatcher.ini

DSC01

/home/dmdba/dmdsc/data/DSC01/DSC01_conf/dmwatcher.ini

[GRP1]
 DW_TYPE = GLOBAL #全局守护类型
 DW_MODE = MANUAL #手动切换模式
 DW_ERROR_TIME = 60 #远程守护进程故障认定时间
 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
 INST_ERROR_TIME = 35 #本地实例故障认定时间
 INST_INI = /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini #dm.ini 配置文件路径
 DCR_INI = /home/dmdba/dmdsc/data/DSC01/dmdcr.ini #dmdcr.ini 配置文件路径
 INST_OGUID = 1000 #守护系统唯一 OGUID 值
 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
 INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

DSC02

/home/dmdba/dmdsc/data/DSC02/DSC02_conf/dmwatcher.ini

[GRP1]
 DW_TYPE = GLOBAL 
 DW_MODE = MANUAL 
 DW_ERROR_TIME = 60 
 INST_RECOVER_TIME = 60 
 INST_ERROR_TIME = 35 
 INST_INI = /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini 
 DCR_INI = /home/dmdba/dmdsc/data/DSC02/dmdcr.ini 
 INST_OGUID = 1000 
 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver 
 INST_AUTO_RESTART = 0
 RLOG_SEND_THRESHOLD = 0
 RLOG_APPLY_THRESHOLD = 0

配置单节点备库环境

备份还原

//初始化备库
./dminit path=/home/dmdba/dws/ SYSDBA_PWD=DMdba_123 SYSAUDITOR_PWD=DMauditor_123

//启动 dmrman
./dmrman use_ap=2

//使用 DMDSC 库的备份集还原恢复到单节点备库
RMAN>RESTORE DATABASE '/home/dmdba/dws/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdsc/data/bak01';
RMAN> RECOVER DATABASE '/home/dmdba/dws/DAMENG/dm.ini' FOR STANDBY FROM BACKUPSET '/home/dmdba/dmdsc/data/bak01';
RMAN>RECOVER DATABASE '/home/dmdba/dws/DAMENG/dm.ini' UPDATE DB_MAGIC;

dm.ini

修改

INSTANCE_NAME = GRP1_RT_01 
PORT_NUM = 6638
DW_INACTIVE_INTERVAL = 60 
ALTER_MODE_STATUS = 0 
ENABLE_OFFLINE_TS = 2 
MAL_INI = 1 
ARCH_INI = 1 
RLOG_SEND_APPLY_MON = 64

dmmal.ini

在 DMDSC 集群的 dmmal.ini 文件基础上,增加备库 GRP1_RT_01 的配置项。所有节点实例的 dmmal.ini 文件内容是一致的,dsc和备库的都要修改。

[mal_inst0]
    mal_inst_name  = DSC01
    mal_host       = 192.168.200.169
    mal_port       = 6536
 MAL_INST_HOST = 192.168.200.169
 MAL_INST_PORT = 6636
 MAL_DW_PORT = 3566
 MAL_INST_DW_PORT = 4566

[mal_inst1]
    mal_inst_name  = DSC02
    mal_host       = 192.168.200.169
    mal_port       = 6537
 MAL_INST_HOST = 192.168.200.169
 MAL_INST_PORT = 6637
 MAL_DW_PORT = 3567
 MAL_INST_DW_PORT = 4567

[MAL_INST2]
 MAL_INST_NAME = GRP1_RT_01
 MAL_HOST = 192.168.200.169
 MAL_PORT = 6538
 MAL_INST_HOST = 192.168.200.169
 MAL_INST_PORT = 6638
 MAL_DW_PORT = 3568
 MAL_INST_DW_PORT = 4568

大写的为后添加的,MAL_INST_HOST 和 MAL_INST_PORT是实例的主机和端口

dmarch.ini

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dws/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DSC01/DSC02

dmwatcher.ini

[GRP1]
 DW_TYPE = GLOBAL
 DW_MODE = MANUAL
 DW_ERROR_TIME = 60
 INST_RECOVER_TIME = 60
 INST_ERROR_TIME = 35
 INST_INI = /home/dmdba/dws/DAMENG/dm.ini
 INST_OGUID = 1000
 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
 INST_AUTO_RESTART = 0 #对单节点,如果需要打开自动拉起功能,将此配置修改为 1 即可
 RLOG_SEND_THRESHOLD = 0
 RLOG_APPLY_THRESHOLD = 0

dmmonitor.ini

任意网络可达机子上启动即可,这里我们放在备库机上

放在/home/dmdba/dws/

MON_LOG_PATH = /home/dmdba/dws/monitor_log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 64
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 0
[GRP1]
MON_INST_OGUID = 1000
MON_DW_IP = 192.168.184.129:3566/192.168.184.130:3567
MON_DW_IP = 192.168.184.128:3568

4.启动

启动主备库

./dmserver /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini DCR_INI=home/dmdba/dmdsc/data/DSC01/dmdcr.ini mount
./dmserver /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini DCR_INI=home/dmdba/dmdsc/data/DSC02/dmdcr.ini mount

./dmserver /home/dmdba/dws/dm.ini mount

设置 OGUID

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

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(1000);
SQL>ALTER DATABASE PRIMARY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

连接备库,设置OGUID值和备库模式

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(1000);
SQL>ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

启动守护进程

三台机器上均启动

./dmwatcher /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dmwatcher.ini
./dmwatcher /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dmwatcher.ini
./dmwatcher /home/dmdba/dws/dmwatcher.ini

启动监视器

./dmmonitor path=/home/dmdba/dws/dmmonitor.ini

5.验证

在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。

image-20260729143346109image.png

使用服务名连接

使用root用户编辑/ect/dm_svc.conf,加入以下内容,具体的连接配置自行决定

DSCDW=(192.168.200.169:6636,192.168.200.169:6637,192.168.200.169:6638)

使用disql连接服务名:

./disql SYSDBA@DSCDW

image-20260729145810330
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服