注册
本地虚拟机搭建DSC集群
专栏/培训园地/ 文章详情 /

本地虚拟机搭建DSC集群

Serein 2025/05/13 61 0 0
摘要

创建共享磁盘

1、在第一台服务器上添加一个磁盘

选择虚拟机(DSC01) > 右键“设置” > 添加“硬盘” > SCSI > 创建新虚拟磁盘 > 指定磁盘容量 > 指定磁盘文件路径及命名 > 确定。

选择新添加得硬盘 2 (SCSI) > 高级 > 设置设备号为 SCSI 1:1 ,模式为独立、永久。

2、在第二台服务器同样添加这个磁盘。

选择虚拟机(DSC02) > 右键“设置” > 添加“硬盘” > SCSI > 使用现有虚拟磁盘 > 选择现有磁盘(浏览找到刚创建的“DMDSC.vmdk”) > 完成。

选择新添加得硬盘 2 (SCSI) > 高级 > 设置设备号为 SCSI 1:1 ,模式为独立、永久。

磁盘分区

在共享磁盘上裸设备划分(DSC01节点操作即可):

输入:

fdisk /dev/sdb

依次输入:

n → p → 1 → “回车” → +100M           # dcr n → p → 2 → “回车” → +100M           # vote n → p → 3 → “回车” → +2048M          # log0 n → p → 4 → “回车” → 回车          # data0 w                                 # 保存

image.png
image.png
image.png
image.png
image.png
image.png
查看分区:

fdisk - l

image.png
image.png

配置裸设备

推荐采用UUID的方式进行裸设备的绑定。

uuid绑定裸设备

绑定设备的 UUID。创建 uuid.sh 文件,使用脚本生成配置文件

##创建uuid.sh文件,写入如下内容: vim uuid.sh curr=$(cd "$(dirname "$0")";pwd) rm -f $curr/88-dm-asmdevices.rules for i in 1 2 3 4; do echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"dm/asm-disk$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\"" >> $curr/88-dm-asmdevices.rules done ##执行 uuid.sh 脚本 chmod +x uuid.sh ./uuid.sh ##脚本执行成功后,会生成绑定配置文件 88-dm-asmdevices.rules,可以根据自己的需求进行修改别名 SYMLINK,本文档修改如下: vim 88-dm-asmdevices.rules KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2929c3dab7d6dcf02e57ada868c", SYMLINK+="raw/raw1",OWNER="dmdba", GROUP="dinstall",MODE="0660" KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600b342449774d0d2c16d990fd6300db", SYMLINK+="raw/raw2",OWNER="dmdba", GROUP="dinstall",MODE="0660" KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600b342a2b1bd08d28e0d58c5db300db", SYMLINK+="raw/raw3",OWNER="dmdba", GROUP="dinstall",MODE="0660" KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600b34208f0b5c5d515dd41dfde300db", SYMLINK+="raw/raw4",OWNER="dmdba", GROUP="dinstall",MODE="0660"

配置部署文件。生成配置文件后,把 88-dm-asmdevices.rules 配置文件 cp 到 DSC 的每个节点上

cp 88-dm-asmdevices.rules /etc/udev/rules.d/88-dm-asmdevices.rules

检查生效
①重启服务器,建议使用该方法
②如果无法重启,执行下述命令

udevadm trigger --type=devices --action=change udevadm control --reload-rules

③授权

chown dmdba:dinstall /dev/raw/raw* -R

④检查生效

blockdev --getsize64 /dev/raw/raw1 blockdev --getsize64 /dev/raw/raw2 blockdev --getsize64 /dev/raw/raw3 blockdev --getsize64 /dev/raw/raw4

直接绑定裸设备

编辑/etc/udev/rules.d/70-persistent-ipoib.rules文件,增加以下语句:(该配置文件两节点均需添加)

vi /etc/udev/rules.d/70-persistent-ipoib.rules
ACTION=="add" , KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N" ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N" ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"

image.png
image.png

完成裸设备绑定:(2个节点都需要)

partprobe /dev/sdb udevadm control --reload-rules udevadm trigger --type=devices --action=change

重启服务:

systemctl restart systemd-udev-trigger.service

image.png
查看裸设备:

ll /dev/raw/*

image.png
查看裸设备大小:

blockdev --getsize64 /dev/raw/raw[1/2/3/4]

image.png
image.png

配置DCR初始化配置文件

配置dmdcr_cfg.ini文件(双节点)
DCR_EP_HOST、DCR_EP_PORT根据自身情况进行修改。

vi /dmdata/data/dmdcr_cfg.ini

image.png

DCR_N_GRP                       = 3     ##集群环境有多少个 GROUP,范围:1~16 DCR_VTD_PATH               = /dev/raw/raw2   ##规划为 vote 的磁盘 DCR_OGUID               = 63635   ## 消息标识,一个组里面只有一个。 [GRP]  #新建一个 GROUP   DCR_GRP_TYPE             = CSS  ##组类型(CSS/ASM/DB)   DCR_GRP_NAME           = GRP_CSS  ##组名   DCR_GRP_N_EP            = 2  ##组内节点个数   DCR_GRP_DSKCHK_CNT     = 60  ##磁盘心跳容错时间,单位:秒 [GRP_CSS]   DCR_EP_NAME             = CSS0   ##CSS 节点名   DCR_EP_HOST              = 192.168.23.134   ##心跳地址   DCR_EP_PORT              = 9341   ##CSS 端口 [GRP_CSS]   DCR_EP_NAME            = CSS1   DCR_EP_HOST             = 192.168.23.135   DCR_EP_PORT             = 9343 [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  ##ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致   DCR_EP_SHM_KEY         = 93360  ##共享内存标识   DCR_EP_SHM_SIZE        = 10  ##共享内存大小     DCR_EP_HOST               = 192.168.23.134  ##心跳地址   DCR_EP_PORT               = 9349  ##ASM 端口   DCR_EP_ASM_LOAD_PATH   = /dev/raw [GRP_ASM]   DCR_EP_NAME              = ASM1   DCR_EP_SHM_KEY         = 93361   DCR_EP_SHM_SIZE        = 10   DCR_EP_HOST               = 192.168.23.135   DCR_EP_PORT               = 9351   DCR_EP_ASM_LOAD_PATH   = /dev/raw [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             = DSC0  ##实例名,和 dm.ini 的 INSTANCE_NAME 一致   DCR_EP_SEQNO           = 0  ##组内序号,不能重复   DCR_EP_PORT              = 5236  ##实例端口,和 dm.ini 的 PORT_NUM 一致   DCR_CHECK_PORT       = 9741   ##DCR 检查端口 [GRP_DSC]   DCR_EP_NAME             = DSC1   DCR_EP_SEQNO           = 1   DCR_EP_PORT              = 5236   DCR_CHECK_PORT       = 9742

创建ASM磁盘

使用 DMASMCMD 工具初始化,1个节点初始化即可:
进入数据库安装目录 /bin 目录下执行 ./dmasmcmd 依次执行

create dcrdisk '/dev/raw/raw1' 'dcr' create votedisk '/dev/raw/raw2' 'vote' create asmdisk '/dev/raw/raw3' 'LOG0' create asmdisk '/dev/raw/raw4' 'DATA0'

image.png
image.png

准备 DMASM 的 MAL 配置文件(命名为 dmasvrmal.ini),使用 DMASM 的“ 2个 ”节点都要配置,内容完全一样,保存到/dmdata/data 目录下:

vi /dmdata/data/dmasvrmal.ini

image.png

[MAL_INST1]  MAL_INST_NAME = ASM0   #数据库实例名,与 dm.ini 的 INSTANCE_NAME 配置项保持一致,MAL 系统中数据库实例名要保持唯一。  MAL_HOST = 192.168.23.134      #MAL IP 地址,使用 MAL_HOST + MAL_PORT 创建 MAL 链路  MAL_PORT = 7236        #MAL 监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间MAL链路配置,监听端端口配置此参数,范围1024~65534,发起连接端的端口在 1024~65535 之间随机分配。 [MAL_INST2]  MAL_INST_NAME = ASM1  MAL_HOST = 192.168.23.135  MAL_PORT = 7237

配置 DCR 启动配置文件(DSC01 & DSC02)

节点一和节点二各需要创建dmdcr.ini文件。

两者内容差别主要在于DMDCR_SEQNO和PATH中的实例名。

将ASM和DB的重启参数均设置为0,为手动拉起ASM和DB服务,主要是为了防止拉起过程出现故障导致不断重启。

vi /dmdata/data/dmdcr.ini

image.png

DSC01:

DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH =/dmdata/data/dmasvrmal.ini      #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 0 #ASM 重启参数,命令行方式启动 DMDCR_ASM_RESTART_INTERVAL = 0 DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/dmdata/data/dmdcr.ini #DB 重启参数,命令行方式启动 DMDCR_DB_RESTART_INTERVAL = 0 DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/dmdata/data/dsc0_config/dm.ini dcr_ini=/dmdata/data/dmdcr.ini

DSC02:

DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH =/dmdata/data/dmasvrmal.ini      #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 1 #ASM 重启参数,命令行方式启动 DMDCR_ASM_RESTART_INTERVAL = 0 DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/dmdata/data/dmdcr.ini #DB 重启参数,命令行方式启动 DMDCR_DB_RESTART_INTERVAL = 0 DMDCR_DB_STARTUP_CMD =/home/dmdba/dmdbms/bin/dmserver path=/dmdata/data/dsc1_config/dm.ini dcr_ini=/dmdata/data/dmdcr.ini

启动DMCSS服务

DSC01:
创建服务(root用户下执行):

cd /home/dmdba/dmdbms/script/root ./dm_service_installer.sh -t dmcss -p DSC01 -dcr_ini /dmdata/data/dmdcr.ini

启动服务(切换dmdba用户):

su - dmdba cd /home/dmdba/dmdbms/bin ./DmCSSServiceDSC01 start

image.png
image.png

DSC02:
创建服务(root用户下执行):

cd /home/dmdba/dmdbms/script/root ./dm_service_installer.sh -t dmcss -p DSC02 -dcr_ini /dmdata/data/dmdcr.ini

启动服务(切换dmdba用户):

su - dmdba cd /home/dmdba/dmdbms/bin ./DmCSSServiceDSC02 start

image.png
image.png

启动ASM服务

DSC01:
创建服务(root用户下执行):

cd /home/dmdba/dmdbms/script/root ./dm_service_installer.sh -t dmasmsvr -p DSC01 -dcr_ini /dmdata/data/dmdcr.ini -y DmCSSServiceDSC01

启动服务(切换dmdba用户):

su - dmdba cd /home/dmdba/dmdbms/bin ./DmASMSvrServiceDSC01 start

image.png
image.png

DSC02:
创建服务(root用户下执行):

cd /home/dmdba/dmdbms/script/root ./dm_service_installer.sh -t dmasmsvr -p DSC02 -dcr_ini /dmdata/data/dmdcr.ini -y DmCSSServiceDSC02

启动服务(切换dmdba用户):

su - dmdba cd /home/dmdba/dmdbms/bin ./DmASMSvrServiceDSC02 start

image.png
image.png

创建ASM磁盘组

使用 dmasmtool 工具创建 DMASM 磁盘组:

./dmasmtool DCR_INI=/dmdata/data/dmdcr.ini

输入下列语句创建 DMASM 磁盘组:

#创建日志磁盘组

create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'

#创建数据磁盘组

create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

image.png

一个节点配置 dminit.ini 配置文件,保存到/dmdata/data 目录:

vi /home/dmdba/config/dminit.ini

image.png

db_name = dsc system_path = +DMDATA/data system = +DMDATA/data/dsc/system.dbf system_size = 128 roll = +DMDATA/data/dsc/roll.dbf roll_size = 128 main = +DMDATA/data/dsc/main.dbf main_size = 128 ctl_path = +DMDATA/data/dsc/dm.ctl ctl_size = 8 log_size = 256 dcr_path = /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备 dcr_seqno = 0 auto_overwrite = 1 [DSC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应 config_path = /dmdata/data/dsc0_config port_num = 5236 mal_host = 192.168.23.134 mal_port = 9340 log_path = +DMLOG/log/dsc0_log01.log log_path = +DMLOG/log/dsc0_log02.log [DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应 config_path = /dmdata/data/dsc1_config port_num = 5236 mal_host = 192.168.23.135 mal_port = 9341 log_path = +DMLOG/log/dsc1_log01.log log_path = +DMLOG/log/dsc1_log02.log

使用 dminit 初始化 DB 环境:

./dminit control=/dmdata/data/dminit.ini

image.png

启动数据库服务器:

将DSC01机器/dmdata/data/dsc1_config 目录拷贝到DSC02机器相同目录下,再分别在2个节点启动 dmserver 即可完成 DMDSC 集群搭建。

scp -r /dmdata/data/dsc1_config dmdba@192.168.23.135:/dmdata/data/

image.png

启动数据库实例

DSC01:
创建服务(root用户下执行):

cd /home/dmdba/dmdbms/script/root ./dm_service_installer.sh -t dmserver -p DSC01 -dm_ini /dmdata/data/dsc0_config/dm.ini -y DmASMSvrServiceDSC01 -dcr_ini /dmdata/data/dmdcr.ini

启动服务(切换dmdba用户):

su - dmdba cd /home/dmdba/dmdbms/bin ./DmServiceDSC01 start

image.png
image.png

DSC02:
创建服务(root用户下执行):

cd /home/dmdba/dmdbms/script/root ./dm_service_installer.sh -t dmserver -p DSC02 -dm_ini /dmdata/data/dsc1_config/dm.ini -y DmASMSvrServiceDSC02 -dcr_ini /dmdata/data/dmdcr.ini

启动服务(切换dmdba用户):

su - dmdba cd /home/dmdba/dmdbms/bin ./DmServiceDSC02 start

image.png
image.png

配置远程归档

将两节点的/dmdata/data/dsc0_config和/dmdata/data/dsc1_config中的dm.ini归档配置ARCH_INI=1
DSC01:

vi /dmdata/data/dsc0_config/dm.ini

image.png
image.png
DSC02:

vi /dmdata/data/dsc1_config/dm.ini

image.png
image.png

双向配置共享本地归档的 REMOTE 归档:
DSC01:

vi /dmdata/data/dsc0_config/dmarch.ini
ARCH_LOCAL_SHARE = 1 [ARCHIVE_LOCAL1]         ARCH_TYPE = LOCAL         ARCH_DEST =+DMDATA/DSC0/arch         ARCH_FILE_SIZE = 128         ARCH_SPACE_LIMIT = 0 [ARCH_REMOTE1]         ARCH_TYPE = REMOTE         ARCH_DEST = DSC1         ARCH_INCOMING_PATH =+DMDATA/DSC1/arch         ARCH_FILE_SIZE = 128         ARCH_SPACE_LIMIT = 0

DSC02:

vi /dmdata/data/dsc1_config/dmarch.ini
ARCH_LOCAL_SHARE = 1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST =+DMDATA/DSC1/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 [ARCH_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC0 ARCH_INCOMING_PATH =+DMDATA/DSC0/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0

配置监听器

配置 dmcssm.ini 文件:

vi /home/dmdba/dmdbms/bin/dmcssm.ini
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致 CSSM_OGUID = 63635 #配置所有 CSS 的连接信息, #和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致 CSSM_CSS_IP = 192.168.23.134:9341 CSSM_CSS_IP = 192.168.23.135:9343 CSSM_LOG_PATH =../log #监视器日志文件存放路径 CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

启动 dmcssm 监视器:

cd /home/dmdba/dmdbms/bin ./dmcssm INI_PATH=/home/dmdba/dmdbms/bin/dmcssm.ini

image.png

验证集群状态

(DSC01)创建 T1 表

create table t1(id int,name varchar2(50));

image.png
(DSC01)向 T1 表插入数据

INSERT INTO T1 VALUES (1,'name1'),(2,'name2');

image.png
(DSC01)COMMIT提交数据

commit;

image.png
(DSC02)查询数据

select * from t1;

image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服