目录
一、DMDSC原理
1.1 数据库和数据库实例
1.2?共享存储
1.3?本地存储
1.4?通信网络
1.5?集群控制软件DMCSS
二、DMDSC实现(2节点基于DMASM)
2.1 环境准备
2.2 共享磁盘裸设备分区与绑定(在root命令下)
2.3 配置dmdcr_cfg.ini文件(在DSC0上配置)
2.4 使用DMASMCMD工具初始化(在DSC0节点上操作)
2.5 配置dmasvermal.ini文件(两节点都需配置)
2.6 准备dmdcr.ini配置文件(两节点都需配置)
2.7 在DSC0和DSC1先后启动DMCSS、DMASM服务程序
2.8 使用dmasmtool工具创建DMASM磁盘组
2.9 配置dminit.ini文件,将其配置在/home/DSC目录下
2.10 使用dminit初始化DB环境
2.11 启动数据库服务器
2.12 搭建监视器,监视DCS集群的运行状况
三、DMDSC启动与关闭流程
一、DMDSC原理
DSC——单数据库、多实例的集群系统
特点:高可用性、高性能、负载均衡
DM DSC集群可以自动处理节点故障及故障切换,不影响对外正常服务,保证系统的高可用性。
集群主要由以下部分组成:
1.1 数据库和数据库实例
1.2?共享存储
? ?可以实现多实例同时访问、修改数据,要求将数据文件、控制文件、日志文件保存在共享存储上。?DMDSC支持使用裸设备或DMASM文件系统作为共享存储。
(1)共享存储最少挂四个盘,即:
voting disk:进程的通知,故障转移
dcr disk:集群的配置信息,故障信息
Group log:日志盘,最小不少于4G,否则会引起后面启动报错
Group data:数据文件盘
?(2)DMASM是一个专用的分布式文件系统,可向用户提供更加便捷的DSC集群数据库文件管理方案,以下主要通过其部件来说明DMASM的功能特点:
- DMASM磁盘与文件管理:DMASM文件系统将物理磁盘格式化后,变成可识别、可管理的 DMASM 磁盘,再通过DMASM 磁盘组将一个或者多个 DMASM 磁盘整合成一个整体提供文件服务。
- dmasmsvr服务器:提供DMASM服务,启动时会扫描/dev/raw路径下的所有裸设备,构建DMASM磁盘组和DMASM文件系统,实例间通过MAL系统进行信息和数据传递。
- dmasmapi接口:用户可以通过调用DMASMAPI接口,访问、操作DMASM文件。
- dmasmcmd初始化工具:DMASM文件系统初始化工具,用于格式化裸设备为DMASM磁盘,并初始化DCR Disk和Voting Disk。
- dmasmtool管理工具:提供了一套linux文件操作命令,用于管理DMASM文件。
1.3?本地存储
用来保存配置文件,包括记录数据库实例的配置信息文件,本地归档日志、远程归档日志。
1.4?通信网络
分为内部网络和外部网络,内部网络如MAL链路,用于数据库实例之间交换信息和数据,以及网络心跳检测等用途。公共网络则用于对外提供数据库服务。
1.5?集群控制软件DMCSS
定时从被监控对象voting disk读取被监控对象的信息,检查被监控对象的状态变化,启动相应处理流程。
?
?
二、DMDSC实现(2节点基于DMASM)
写在前面:
1.要关闭防火墙;
2.若在配置过程中出现文件开启失败的提示,在确认该路径下文件确实存在时,很有可能就是文件权限不对,建议使用dmdba权限进行操作,否则配置过程中会出现很多问题;
3.若启动dmcss和dmasmsvr失败,在确认配置文件无误时,重启重启服务器即可。
2.1 环境准备
在VMware中创建共享磁盘
操作系统:2台麒麟10
共享磁盘:20G,具体分配如下:
操作系统 | 机器名 | 内存 | 本地磁盘 | 共享磁盘 | IP | 数据库安装路径 | 配置文件路径 | Kylin10 | DSC0 | 2G | 30G | 20G | 192.168.118.139 | /dm8 | /home/DSC | Kylin10 | DSC1 | 2G | 30G | 20G | 192.168.118.138 | /dm8 | /home/DSC |
2.2 共享磁盘裸设备分区与绑定(在root命令下)
查看共享磁盘
对共享磁盘/dev/sdb进行分区,具体分区如下:
磁盘 | 空间 | voting disk | 100M | dcr disk | 100M | Group log | 4G | Group data | 15.8G |
以下创建了第一个分区,大小为100M,之后的分区与之相似。
依次创建四个分区,分区完成后需要输入w保存:
在两节点上编辑/etc/udev/rules.d/60-raw.rules文件
vim /etc/udev/rules.d/60-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"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dmdba", MODE="660"
在两节点上分别执行partprobe /dev/sdb,通知系统分区表的变化
[root@localhost raw]# partprobe /dev/sdb
最后执行裸设备绑定
[root@localhost raw]# udevadm trigger --action=add
执行裸设备绑定时: 一般执行:start_udev 但由于Linux系统版本不同,裸设备绑定命令也有所不同,还可使用以下命令进行裸设备绑定: [root@localhost raw]#?/sbin/udevadm trigger --type=devices --action=change 或者 [root@localhost raw]#?/sbin/udevadm control --reload 或者 [root@localhost raw]#?udevadm trigger --action=add |
最后检查裸设备绑定是否成功:
[root@localhost raw]# ll /dev/raw/raw*
?
2.3 配置dmdcr_cfg.ini文件(在DSC0上配置)
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.118.139
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.118.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 = 20
DCR_EP_HOST = 192.168.118.139
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.118.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 = 5236
DCR_CHECK_PORT = 9741
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5237
DCR_CHECK_PORT = 9742
2.4 使用DMASMCMD工具初始化(在DSC0节点上操作)
2.5 配置dmasvermal.ini文件(两节点都需配置)
两节点的配置内容一致
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.118.139
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.118.138
MAL_PORT = 7236
2.6 准备dmdcr.ini配置文件(两节点都需配置)
两节点的dmdcr_seqo分别为0和1,其他内容一致
DSC0:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/DSC/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/home/DSC/dmdcr.ini
#DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmasmsvr path=path=/dm8/data/DAMENG/dm.ini dcr_ini=/home/DSC/dmdcr.ini
DSC1:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/DSC/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/home/DSC/dmdcr.ini
#DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmasmsvr path=path=/dm8/data/DAMENG/dm.ini dcr_ini=/home/DSC/dmdcr.ini
2.7 在DSC0和DSC1先后启动DMCSS、DMASM服务程序
[dmdba@localhost bin]$ ./dmcss DCR_INI=/home/DSC/dmdcr.ini
[dmdba@localhost bin]$ ./dmasmsvr DCR_INI=/home/DSC/dmdcr.ini
两节点都启动后,显示如下:
?
[dmdba@localhost bin]$./dmasmtool DCR_INI=/home/dmdba/dmdbms/data/dsc/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3' ?
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
2.9 配置dminit.ini文件,将其配置在/home/DSC目录下
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/DSC/dsc0_config
port_num = 5236
mal_host = 192.168.118.139
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/DSC/dsc1_config
port_num = 5237
mal_host = 192.168.118.138
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
2.10 使用dminit初始化DB环境
[dmdba@localhost bin]$ ./dminit control=/home/DSC/dminit.ini
在/home/DSC目录下得到两个文件夹,将dsc1_config文件夹发送到DSC1的相同目录下
2.11 启动数据库服务器
DSC0:
[dmdba@localhost bin]$./dmserver /home/DSC/dsc0_config/dm.ini dcr_ini=/home/DSC/dmdcr.ini
DSC1:
[dmdba@localhost bin]$./dmserver /home/DSC/dsc1_config/dm.ini dcr_ini=/home/DSC/dmdcr.ini
2.12 搭建监视器,监视DCS集群的运行状况
配置dmcssm.ini
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 192.168.118.139:9341
CSSM_CSS_IP = 192.168.118.138:9343
CSSM_LOG_PATH =../log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
启动监视器:
[dmdba@localhost bin]$ ./dmcssm INI_PATH=/home/DSC/dmcssm.ini
?
三、DMDSC启动与关闭流程
启动:
DMCSS→DMASMSVR→dmserver
均要在每个节点操作
关闭:
dmserver→DMASMSVR→DMCSS
先关闭 dmserver,再依次关闭 DMASMSVR 和 DMCSS。
DMASMSVR 和 dmserver 控制台执行 exit 命令,会通知所有其他节点一起退出;
DMCSS没有同步功能,需要手动退出所有节点。
更多问题欢迎到达梦技术社区提问哦!首页 | 达梦云适配中心 (dameng.com)
|