达梦DSC概述(摘自达梦官方文档)
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同 一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。 数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些 文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机 日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。
DMDSC 集群得以实现的重要基础就是共享存储。DM 支持的共享存储有两种:裸设备和 DMASM。这两种存储的区别在于后者在前者的基础上,部署并使用了 DMASM 文件系统。为 了方便对裸设备上的磁盘或文件进行管理,推荐用户使用后者。
1. 虚拟机环境配置
主机名 | 内网IP | 外网IP | 备注 |
dm5 | 192.168.111.135 | 192.168.196.135 | 节点一 |
dm6 | 192.168.111.136 | 192.168.196.136 | 节点二 |
2. 磁盘划分
节点一节点二本地磁盘各20G,共享磁盘100G.,共享磁盘做了四个主分区大小分别为100M,100M.2048M,剩余。(通过fdisk(MBR分区表),大于2T磁盘则用parted(GPT分区表))
节点一的nvme0n2(100G)做共享磁盘
2. 1 共享磁盘搭建
通过iscsi搭建共享磁盘
2.1.1 通过targetcli工具搭建iscsi服务端
具体操作步骤:
1. 创建块设备
cd /backstores/block
create [name] [dev path]
2. 创建一个target
cd /iscsi
create iqn.2021-11.com.mycomputer:target1
3. 创建ACL(access control lists)
cd /iscsi/iqn.2021-11.com.mycomputer:target1/tpg1/acls
create iqn.2021-11.com.mycomputer.disk
4. 创建LUN
cd /iscsi/ iqn.2021-11.com.mycomputer:target1/tpg1/luns
create [backstores]
(注:基于创建的块设备)
5. 配置访问ip及端口
cd /iscsi/ iqn.2021-11.com.mycomputer:target1/tpg1/portals
delete 0.0.0.0 3260
create 192.168.196.135 ip_port=3260
6. 保存退出
exit
(注:配置文件路径为/etc/target/saveconfig.json,如果重启忘记自启动配置会失效,可用restore还原)
7. 配置自启动(待考证)
systemctl enable target
systemctl enable iscsi
2.1.2 配置iscsi客户端
vim /etc/iscsi/initiatornaem.ini
InitiatorName=iqn.2021-11.com.mycomputer:disk
(注:名字为targetcli中配置的acl)
2.1.3 共享存储探测及连接
通过命令:iscsiadm探测目标iscsi服务器
iscsiadm -m discovery -t sendtargets -p 192.168.196.135:3260
登录target
iscsiadm -m node -T iqn.2021-11.com.mycomputer:target1 -p 192.168.196.135:3260
-l
退出target
iscsiadm -m node -T iqn.2021-11.com.mycomputer:target1 -p 192.168.196.135:3260
-u
设置开机自动登录
Iscsiadm -m node -T iqn.2021-11.com.mycomputer:target1
-p 192.168.196.135:3260 --op update -n node.startup -v automatic
取消自动登录
-v manual
更多配置可参考配置文件/etc/iscsi/iscsi.conf。
2.2 共享磁盘裸设备划分
2.2.1 节点一、二登录共享磁盘
sda为共享磁盘,原盘为dm5上的nvme0n2。
2.2.2 编辑/etc/udev/rules.d/60-raw.rules
没有则新建,编辑后重启虚拟机。
注:建议将OWNER和GROUP改为dmdba:dinstall。
由于是centos8,没有start-udev指令(整合到了udevadm,且指令不知为何不生效,因此重启刷新)
重启后查看raw
可通过blockdev –getsize64 /dev/raw/raw*查看裸设备大小
3. 配置文件准备
与 DMDSC 相关的配置文件包括:
DMDCR_CFG.INI
DMDCR.INI
DMINIT.INI
MAL 系统配置文件(DMMAL.INI、DMASVRMAL.INI)
DM.INI
3.1 dmdcr_cfg.ini配置
路径为/home/data后续无特殊说明均在此目录下。
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.196.135
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.196.136
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 = 20
DCR_EP_HOST = 192.168.196.135
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 = 20
DCR_EP_HOST = 192.168.196.136
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 = 5236
DCR_CHECK_PORT = 9741
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5237
DCR_CHECK_PORT = 9742
3.2 使用dmasmcmd初始化
注:只需要在一个节点上执行即可。.
3.3 dmasvrmal.ini配置
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.196.135
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.196.136
MAL_PORT = 7237
注:双节点都要配置。
3.4 dmdcr.ini配置
节点一:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 60
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/data/dsc0_config/dm.ini dcr_ini=/home/data/dmdcr.ini
节点二:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/data/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 60
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/data/dsc1_config/dm.ini dcr_ini=/home/data/dmdcr.ini
注:双节点里配置文件里path不是单独行,是cmd后续的指令,中间是空格不是换行符。
3.5 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] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /home/data/dsc0_config
port_num = 5236
mal_host = 192.168.196.135
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 = /home/data/dsc1_config
port_num = 5237
mal_host = 192.168.196.136
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
3. 服务启动
3.1 DMCSS、DMASMSVR启动
在节点一、二先后分别启动dmcss、dmasmsvr
启动命令:
./dmcss DCR_INI=/home/data/dmdcr.ini
. /dmasmsvr DCR_INI=/home/data/dmdcr.ini
主节点 css:
副节点css:
主节点asmsvr:
副节点asmsvr:
主css中show查看当前集群状态
3.2 DMASM磁盘组创建
节点一运行dmasmtool,后创建日志磁盘组及数据磁盘组
./dmasmtool DCR_INI=/home/data/dmdcr.ini
create diskgroup ‘DMLOG’ asmdisk ‘/dev/raw/raw3’
create diskgroup ‘DMDATA’ asmdisk ‘/dev/raw/raw4’
3.3 使用dminit.ini初始化数据库
./dminit control=/home/data/dminit.ini
执行完成后,会在执行节点config_path目录下(/home/data/dsc0_config和/home/data/dsc1_config)下生成配置文件dm.ini和dmmal.ini。
将/home/data/dsc1_config文件夹拷贝到节点二。
如果DMCSS配置有自动拉起dmserver功能,可以等待DMCSS自动拉起实例,不需要手动启动。如果手动启动执行以下命令:
节点一:
/dmserver /home/data/dsc0_config/dm.ini dcr_ini=/home/data/dmdcr.ini
节点二:
./dmserver /home/data/dsc1_config/dm.ini dcr_ini=/home/data/dmdcr.ini
启动完毕后主节点通过css控制台show命令查看集群状态
4. DSC集群启停
整体流程:
如果配置了dmcss自动拉起dmassmsvr及dmserver。则只需打开dmcss即可,等待css拉起asm磁盘组及dsc节点组。打开dmcss后,可使用dmcssm监控集群状态,及关闭集群,最后关闭css。
./dmcss DCR_INI=/home/data/dmdcr.ini
./dmcssm INI_PATH=/home/data/dmcssm.ini
如果没有配置dmcss自动拉起,则先在各个节点打开dmasmsvr,再打开dmcss,再打开数据库。关闭则是先关闭数据库再关闭asm磁盘组,最后关闭css(asmsvr和dmserver关闭只需单节点执行)
./dmasmsvr DCR_INI=/home/data/dmdcr.ini
. /dbserver /home/data/dsc0_config/dm.ini DCR_INI=/home/data/dmdcr.ini
5. DSC集群登录
配置dm_svc.conf及ODBC数据源
DSC=(192.168.111.135:5236,192.168.111.136:5237)
详细配置参考
VS2022下通过ODBC访问达梦数据库(C++)_cn_lyt的博客-CSDN博客
使用本机系统安装的DM客户端工具disql。命令行登录测试。
更多达梦相关技术文档可访问