基于 DMASM 的 DMDSC
集群规划
节点机器 | 实例名称 | IP | PORT_NUM |
allmart01 | CSS0 | 192.168.192.180 | 9836 |
ASM0 | 5836 | ||
DSC01 | 6636 | ||
allmart02 | CSS1 | 192.168.192.181 | 9837 |
ASM1 | 5837 | ||
DSC02 | 6637 |
环境准备
用户准备
# 新建组 dmdbagroupadd dmdba# 在组 dmdba (第一个)中创建一个用户 dmdba (第二个)useradd -g dmdba dmdba# 为用户 dmdba 设置密码passwd dmdba# 用户输入密码,本例以 ****** 代替******
目录准备
使用 dmdba 用户创建用于 DSC 环境搭建的目录:/home/dmdba/dmdsc。
DM 执行码和工具存放于目录:/home/dmdba/dmdsc/bin。
配置文件存放于目录:allmart01 机器/home/dmdba/dmdsc/data/DSC01 和 allmart02 机器 /home/dmdba/dmdsc/data/DSC02
mkdir -p /home/dmdba/dmdsc/bin
mkdir -p /home/dmdba/dmdsc/data/DSC01/DSC02
磁盘准备
修改两台虚拟机的vmx文件
scsi1.sharedBus = "virtual" disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
disk.EnableUUID = "TRUE"
重启两台虚拟机
[root@allmart01 ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009c6ea
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 6047743 1974272 82 Linux swap /
Solaris /dev/sda3 6047744 79699967 36826112 8e Linux LVM
磁盘 /dev/sdb:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-root:37.7 GB, 37706792960 字节,73646080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
划存储
用途 | 空间规划(总共30G) |
sdb1用于dcr信息 | 1024M |
sdb2用于存放vote信息 | 1024M |
sdb3用于存放redo log | 4096M |
sdb4用于存放data | 剩下的全部空间 |
详细步骤如下:
[root@DSC1 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x68697db2.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-62914559, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559): +1G Partition 1 of type Linux and of size 1 GiB is set
........
Command (m for help): n
Partition type: p primary (1 primary, 0 extended, 3 free)
e extended Select (default p): p
Partition number (2-4, default 2): 2
First sector (2099200-62914559, default 2099200): Using default value 2099200 Last sector, +sectors or +size{K,M,G} (2099200-62914559, default 62914559): +1G Partition 2 of type Linux and of size 1 GiB is set
Command (m for help): n
Partition type: p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p Partition number (3,4, default 3): 3
First sector (4196352-62914559, default 4196352): Using default value 4196352 Last sector, +sectors or +size{K,M,G} (4196352-62914559, default 62914559): +4G Partition 3 of type Linux and of size 4 GiB is set
Command (m for help): n
Partition type: p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
Selected partition 4
First sector (12584960-62914559, default 12584960): Using default value 12584960 Last sector, +sectors or +size{K,M,G} (12584960-62914559, default 62914559): +20G Partition 4 of type Linux and of size 20 GiB is set
Command (m for help): p
Disk /dev/sdb: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x68697db2
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 12584959 4194304 83 Linux
/dev/sdb4 12584960 54527999 20971520 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
挂存储方法:直接挂
-
DSC1机器、dsc机器依次修改
[root@~]# 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"
[root@~]# partprobe /dev/sdb
[root@~]# reboot
搭建两节点 DMDSC
创建dmdcr_cfg.ini (两台机器相同)
vi /home/dmdba/dmdsc/data/DSC01/dmdcr_cfg.ini
vi /home/dmdba/dmdsc/data/DSC02/dmdcr_cfg.ini
DCR_N_GRP = 3 #集群环境有多少个GROUP,范围:1~16
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 1071107589
[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.192.180 #心跳地址
DCR_EP_PORT = 9836 #CSS端口
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.192.181
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 #ASM节点名,和dmasvrmal的MAL_INST_NAME一致
DCR_EP_SHM_KEY = 64735 #共享内存标识
DCR_EP_SHM_SIZE = 10 #共享内存大小
DCR_EP_HOST = 192.168.192.180 #心跳地址
DCR_EP_PORT = 5836 #ASM端口
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 54736
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.192.181
DCR_EP_PORT = 5837
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 = DSC01 #实例名,和dm.ini的INSTANCE_NAME一致
DCR_EP_SEQNO = 0 #组内序号,不能重复
DCR_EP_PORT = 6636 #实例端口,和dm.ini的PORT_NUM一致
DCR_CHECK_PORT = 5536 #DCR检查端口
[GRP_DSC]
DCR_EP_NAME = DSC02
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 6637
初始化磁盘组
/home/dmdba/dmdbms/bin/dmasmcmd
create dcrdisk '/dev/raw/raw1' 'DCR'
create votedisk '/dev/raw/raw2' 'VOTE'
create asmdisk '/dev/raw/raw3' 'DMLOG'
create asmdisk '/dev/raw/raw4' 'DMDATA' init dcrdisk '/dev/raw/raw1' from '/home/dmdba/dmdsc/data/DSC01/dmdcr_cfg.ini' identified by 'admin1234'
init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdsc/data/DSC01/dmdcr_cfg.ini'
listdisks /dev/raw 是一个与达梦数据库(DMDB)有关的命令,用于列出指定目录下的原始设备信息,尤其是在配置ASM(Automatic Storage Management)时使用。
[dmdba@DSC1 ~]$ /home/dmdba/dmdbms/bin/dmasmcmd
dmasmcmd V8
ASM>create dcrdisk '/dev/raw/raw1' 'DCR' [TRACE]The ASM initialize dcrdisk /dev/raw/raw1 to name DMASMDCR
Used time: 12.718(ms).
ASM>create votedisk '/dev/raw/raw2' 'VOTE' [TRACE]The ASM initialize votedisk /dev/raw/raw2 to name DMASMVOTE
Used time: 1.437(ms).
ASM>create asmdisk '/dev/raw/raw3' 'DMLOG' [TRACE]The ASM initialize asmdisk /dev/raw/raw3 to name DMASMDMLOG
Used time: 1.634(ms). ASM>create asmdisk '/dev/raw/raw4' 'DMDATA' [TRACE]The ASM initialize asmdisk /dev/raw/raw4 to name DMASMDMDATA
Used time: 1.857(ms).
ASM>init dcrdisk '/dev/raw/raw1' from '/home/dmdba/dmdsc/data/DSC01/dmdcr_cfg.ini' identified by 'admin1234' [TRACE]DG 126 alloc extent for inode (0, 0, 1) [TRACE]DG 126 alloc 4 extents for 0xfe000002 (0, 0, 2)->(0, 0, 5)
Used time: 15.110(ms).
ASM>init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdsc/data/DSC01/dmdcr_cfg.ini' [TRACE]DG 125 alloc extent for inode (0, 0, 1) [TRACE]DG 125 alloc 4 extents for 0xfd000002 (0, 0, 2)->(0, 0, 5)
Used time: 7.009(ms).
ASM>
配置 dmasvrmal.ini(相同)
vi /home/dmdba/dmdsc/data/DSC01/dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME= ASM0
MAL_HOST= 192.168.192.180
MAL_PORT= 4836
[MAL_INST2]
MAL_INST_NAME= ASM1
MAL_HOST= 192.168.192.181
MAL_PORT= 4837
配置dmdcr.ini
vi /home/dmdba/dmdsc/data/DSC01/dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dmdsc/data/DSC01/dmasvrmal.ini
DMDCR_SEQNO = 0 #
DMDCR_ASM_RESTART_INTERVAL = 0 #
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini #
DMDCR_DB_RESTART_INTERVAL = 0 #
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmserver path=/home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
vi /home/dmdba/dmdsc/data/DSC02/dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dmdsc/data/DSC02/dmasvrmal.ini
DMDCR_SEQNO = 1 #
DMDCR_ASM_RESTART_INTERVAL = 0 #
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmasmsvr
dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini #
DMDCR_DB_RESTART_INTERVAL = 0 #
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmserver
path=/home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini
dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
ROOT用户执行:
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/dmserver
启动DMCSS:
主节点(180)
nohup /home/dmdba/dmdbms/bin/dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini &
备节点(181)
nohup /home/dmdba/dmdbms/bin/dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini &
启动DMASMSVR
主节点(180)
nohup /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini &
备节点(181)
nohup /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini &
创建DMASM磁盘组
/home/dmdba/dmdbms/bin/dmasmtool dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.in
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
主机配置文件
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
LOG_SIZE= 512 DCR_
PATH= /dev/raw/raw1
DCR_SEQNO= 0
AUTO_OVERWRITE= 1
PAGE_SIZE = 32
EXTENT_SIZE = 16
[DSC01]
CONFIG_PATH= /home/dmdba/dmdsc/data/DSC01/DSC01_conf
PORT_NUM = 6636
MAL_HOST= 192.168.192.180
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.192.181
MAL_PORT= 6537
LOG_PATH= +DMLOG/log/DSC02_log1.log
LOG_PATH= +DMLOG/log/DSC02_log2.log
使用 DMINIT 初始化一个节点的数据库环境(DSC1)。
/home/dmdba/dmdbms/bin/dminit control=/home/dmdba/dmdsc/data/DSC01/dminit.ini
[dmdba@DSC1 bin]$ /home/dmdba/dmdbms/bin/dminit control=/home/dmdba/dmdsc/data/DSC01/dminit.ini initdb
V8 db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-03-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: +DMLOG/log/DSC01_log1.log log file path: +DMLOG/log/DSC01_log2.log log file path: +DMLOG/log/DSC02_log1.log log file path: +DMLOG/log/DSC02_log2.log FILE "/home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini" has already existed
FILE "/home/dmdba/dmdsc/data/DSC01/DSC01_conf/sqllog.ini" has already existed FILE "/home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini" has already existed
FILE "/home/dmdba/dmdsc/data/DSC02/DSC02_conf/sqllog.ini" has already existed FILE "+DMDATA/data/dsc/dm.ctl" has already existed
FILE "+DMLOG/log/DSC01_log1.log" has already existed write to dir [+DMDATA/data/dsc]. create dm database success. 2024-06-13 16:48:38
使用拷贝的方式配置另外一个节点的数据库环境。
scp -r /home/dmdba/dmdsc/data/DSC02/* dmdba@192.168.192.181:/home/dmdba/dmdsc/data/DSC02/
[dmdba@DSC1 DSC02_conf]$ scp -r /home/dmdba/dmdsc/data/DSC02/* dmdba@192.168.192.181:/home/dmdba/dmdsc/data/DSC02/
The authenticity of host '192.168.192.181 (192.168.192.181)' can't be established. ECDSA key fingerprint is SHA256:UI//v9tDnoTWMVcLhuW1Mp/xqRAMdMdmb2+AN4fEEUs.
ECDSA key fingerprint is MD5:b2:dd:2d:49:03:5a:90:89:3c:07:9a:d1:14:71:14:65. Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.192.181' (ECDSA) to the list of known hosts. dmdba@192.168.192.181's password: dm.ini 100% 76KB 47.2MB/s 00:00 sqllog.ini 100% 714 1.9MB/s 00:00 dmmal.ini 100% 212 681.7KB/s 00:00
[dmdba@DSC1 DSC02_conf]$
分别启动两个节点的服务器
180节点服务器启动:
/home/dmdba/dmdbms/bin/dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini
181节点服务器启动:
/home/dmdba/dmdbms/bin/dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini
配置并启动 DMCSSM 监视器
#和DMDCR_CFG.INI中的DCR_OGUID保持一致
CSSM_OGUID = 1071107589
#配置所有CSS的连接信息,
#与DMDCR_CFG.INI中CSS配置项的DCR_EP_HOST和DCR_EP_PORT保持一致
CSSM_CSS_IP = 192.168.198.180:9836
CSSM_CSS_IP = 192.168.198.181:9837
CSSM_LOG_PATH = /home/dmdba/dmdsc/data/cssm_log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
#和DMDCR_CFG.INI中的DCR_OGUID保持一致
CSSM_OGUID = 509317566 #配置所有CSS的连接信息, #与DMDCR_CFG.INI中CSS配置项的DCR_EP_HOST和DCR_EP_PORT保持一致
CSSM_CSS_IP = 192.168.192.180:9836
CSSM_CSS_IP = 192.168.192.181:9837
CSSM_LOG_PATH = /home/dmdba/dmdsc/data/cssm_log #监视器日志文件存放路径,没有的话需要创建
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
-
创建MCSSM 的日志存放路径
mkdir /home/dmdba/dmdsc/data/cssm_log
-
启动 DMCSSM 集群监视器
[dmdba@DSC1 data]$ /home/dmdba/dmdbms/bin/dmcssm ini_path=/home/dmdba/dmdsc/data/dmcssm.ini [monitor] 2024-06-13 17:41:04: CSS MONITOR V8 [monitor] 2024-06-13 17:41:04: CSS MONITOR SYSTEM IS READY. [monitor] 2024-06-13 17:41:04: Wait CSS Control Node choosed... [monitor] 2024-06-13 17:41:05: Wait CSS Control Node choosed succeed.
show
达梦社区地址:https://eco.dameng.com