1. 前置准备
1.1 基本情况介绍
准备两台虚拟机A、B,操作系统Linux Ubuntu22.04,均安装了DM8、安装目录:/dm,并且均关闭防火墙,IP地址分别为192.168.127.139(A)和192.168.127.138(B)。
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
1.2 配置共享磁盘
-
在主机的VMware安装目录下打开终端,运行如下命令:
.\vmware-vdiskmanager.exe -c -s 20G -a lsilogic -t 2 "D:\my VM\DMDSCtemp\DSC\share.vmdk"
-
保持A、B为关闭状态,然后分别对A、B添加共享磁盘的操作,具体如下:
-
对该虚拟机点击编辑虚拟机设置——添加——硬盘——下一步
-
一直选择下一步,直到提示选择磁盘。然后选择使用现有虚拟磁盘,然后添加上一步创建的共享磁盘,最后确定即可:
-
- 分别编辑A、B的.vmx文件(文本工具编辑):
添加如下语句:
disk.locking="FALSE" disk.EnableUUID = "TRUE"
- 方法
-
首先找到对应的磁盘:
lsblk
-
然后进行分区:
fdisk /dev/sdb #1、依次输入 n→p→1→回车→+1g→回车,完成第一块磁盘划分 #2、依次输入 n→p→2→回车→+1g→回车,完成第二块磁盘划分 #3、依次输入 n→p→3→回车→+8g→回车,完成第三块磁盘划分 #4、依次输入 n→p→4→回车→回车,完成第四块磁盘划分
-
可以在另一台机器上输入同样的查看磁盘指令,但是貌似需要重新启动:
-
-
分别对A、B绑定裸设备:
-
首先编辑80-raw.rules:
vim /etc/udev/rules.d/80-raw.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" KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="adm", MODE="660" #根据自身情况
-
然后使之生效:
artprobe /dev/sdb udevadm control --reload-rules udevadm trigger --type=devices --action=change
-
然后可以查看到绑定的情况:
ll /dev/raw
-
2. 配置工作
2.1 配置dmdcr_cfg.ini
分别准备 dmdcr_cfg.ini 配置文件,保存到/dm/data/目录下面。以便后续 DMASMCMD 工具执行 init 语句会使用。
vim /dm/data/dmdcr_cfg.ini
#dmdcr_cfg.ini内容如下
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635
[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.127.131
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.127.138
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
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.127.131
DCR_EP_PORT = 9349
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.127.138
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
DCR_EP_SEQNO = 0
DCR_EP_PORT = 11451
DCR_CHECK_PORT = 9741
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 11451
DCR_CHECK_PORT = 9742
2.2 创建ASM磁盘
在其中一台虚拟机上dm8/bin下运行 dmasmcmd,同样位于/bin目录。
./dmasmcmd
#在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'
init dcrdisk '/dev/raw/raw1' from '/dm/data/dmdcr_cfg.ini'identified by '123456'
init votedisk '/dev/raw/raw2' from '/dm/data/dmdcr_cfg.ini'
2.3 DMASM 的 MAL 配置文件
分别在两台机器上的安装目录data下配置 dmasvrmal.ini文件:
vim /dm/data/dmasvrmal.ini
#编辑如下信息
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.127.131
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.127.138
MAL_PORT = 7237
2.4 配置dmdcr.ini
同样地分别在两台机器的安装目录下的data目录下配置dmdcr.ini文件:
vim /dm/data/dmdcr.ini
2.4.1 DCS0
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm/data/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL =0
DMDCR_ASM_STARTUP_CMD = /dm/bin/dmasmsvr dcr_ini=/dm/data/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm/bin/dmserver path=/dm/data/dsc0/dm.ini dcr_ini=/dm/data/dmdcr.ini
2.4.2 DCS1
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm/data/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL =0
DMDCR_ASM_STARTUP_CMD = /dm/bin/dmasmsvr dcr_ini=/dm/data/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm/bin/dmserver path=/dm/data/dsc1/dm.ini dcr_ini=/dm/data/dmdcr.ini
2.5 启动DMCSS
分别在两台机器上启动DMCSS,先启动者为控制节点。dmcss位于bin目录下。
以DCS0为示例:
./dmcss DCR_INI=/dm/data/dmdcr.ini
注意,先启动的为DSS控制节点。
2.6 启动ASM
同上,两台机器上都要启动。
./dmasmsvr DCR_INI=/dm/data/dmdcr.ini
2.7 使用dmasmtool工具创建DMASM磁盘
选择一个节点,启动dmasmtool工具(于dm/bin目录):
./dmasmtool DCR_INI=/dm/data/dmdcr.ini
启动后,输入以下信息:
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3' #创建日志磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4' #创建数据磁盘组
最后,输入exit退出
2.8 初始化实例
准备 dminit.ini 配置文件,保存到/dm/data 目录 。
vim /dm/data/dminit.ini
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]
config_path = /dm/data/dsc0_config
port_num = 11451
mal_host = 192.168.127.131
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1]
config_path = /dm/data/dsc1_config
port_num = 11451
mal_host = 192.168.127.138
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
选择一个节点,启动 dminit 工具初始化数据库。dminit 执行完成 后,会在 config_path 目录(/dm/data/dsc0_config 和 /dm/data/dsc1_config)下生成配置文件 dm.ini 和 dmmal.ini。
./dminit control=/dm/data/dminit.ini
这里DM技术手册上只说了选择一个节点,但是本人在初始化的时候在ASM非控制节点上运行或报告错误,在控制节点上则成功了,具体原因有待分析。
初始化完成后会在 init 控制文件配置的目录下,即dm/data目录下生成 2 个实例的配置文件 dsc0_config和dsc1_config,将dsc1_config拷贝到另一台虚拟机上对应的位置 :
scp -r /dm/data/dsc1_config dmdba@192.168.127.138:/dm/data/
3. 启动dmserver数据库服务
在两台虚拟机上分别位于bin目录下的dmserver:
./dmserver /dm/data/dsc0_config/dm.ini dcr_ini=/dm/data/dmdcr.ini #启动DSC0
./dmserver /dm/data/dsc1_config/dm.ini dcr_ini=/dm/data/dmdcr.ini #启动DSC1
DSC0:
DSC1:
4. 检查集群状态
DSS控制节点对应的机器的DSS窗口中运行show命令,可以查看:
若nst_status 字段为 OPEN,vtd_status 字段为 WORKING,active 字段为 TRUE 说明 db 服务正常,至此DSC数据共享集群搭建完成。
如果需要实例上的数据验证,也可以进行。在其中一台虚拟机上新增数据:
然后在另一台上查询:
大功告成!
更多关于DM数据库的资讯请移步:https://eco.dameng.com